kibana-with-account
Version:
kibana-with-account is develop based kibana project
125 lines (106 loc) • 3.19 kB
JSX
var React = require('react/addons');
var Modal = require('../../../../components/Modal');
var ControlGroup = require('../../../../components/form/ControlGroup');
var TextControl = require('../../../../components/form/TextControl');
var Button = require('../../../../components/form/Button');
var Spinner = require('../../../../components/form/Spinner');
var Actions = require('../../actions/User');
var LinkedState = React.addons.LinkedStateMixin;
var Component = React.createClass({
mixins: [LinkedState],
contextTypes: {
router: React.PropTypes.func
},
getInitialState: function () {
return {};
},
componentWillUnmount: function () {
clearTimeout(this.timeout);
},
componentWillReceiveProps: function (nextProps) {
if (!nextProps.data.show) {
this.replaceState({});
}
else {
this.timeout = setTimeout(function () {
this.refs.username.refs.inputField.getDOMNode().focus();
}.bind(this), 100);
}
},
onSubmit: function (event) {
event.preventDefault();
event.stopPropagation();
Actions.createNew({
username: this.state.username,
email: this.state.email,
password: this.state.password
}, this.context.router);
},
render: function () {
var alerts;
if (this.props.data.error) {
alerts = <div className="alert alert-danger">
{this.props.data.error}
</div>;
}
var notice;
if (this.props.data.success) {
notice = <div className="alert alert-success">
Loading data...
</div>;
}
var formElements;
if (!this.props.data.success) {
formElements = <fieldset>
{alerts}
<TextControl
name="username"
ref="username"
label="Username"
hasError={this.props.data.hasError.username}
valueLink={this.linkState('username')}
help={this.props.data.help.username}
disabled={this.props.data.loading}
/>
<TextControl
name="email"
label="Email"
hasError={this.props.data.hasError.email}
valueLink={this.linkState('email')}
help={this.props.data.help.email}
disabled={this.props.data.loading}
/>
<TextControl
name="password"
label="Password"
type="password"
hasError={this.props.data.hasError.password}
valueLink={this.linkState('password')}
help={this.props.data.help.password}
disabled={this.props.data.loading}
/>
<ControlGroup hideLabel={true} hideHelp={true}>
<Button
type="submit"
inputClasses={{'btn-primary': true}}
disabled={this.props.data.loading}>
Create new
<Spinner space="left" show={this.props.data.loading}/>
</Button>
</ControlGroup>
</fieldset>;
}
return (
<Modal
header="Create new"
show={this.props.data.show}
onClose={Actions.hideCreateNew}>
<form onSubmit={this.onSubmit}>
{notice}
{formElements}
</form>
</Modal>
);
}
});
module.exports = Component;