diff --git a/browser/main/Components/AboutModal.jsx b/browser/main/Components/AboutModal.jsx index 53ffc253..d95254d5 100644 --- a/browser/main/Components/AboutModal.jsx +++ b/browser/main/Components/AboutModal.jsx @@ -4,12 +4,20 @@ var version = remote.getGlobal('version') var React = require('react/addons') var ExternalLink = require('../Mixins/ExternalLink') +var KeyCaster = require('../Mixins/KeyCaster') module.exports = React.createClass({ - mixins: [ExternalLink], + mixins: [ExternalLink, KeyCaster('aboutModal')], propTypes: { close: React.PropTypes.func }, + onKeyCast: function (e) { + switch (e.status) { + case 'closeModal': + this.props.close() + break + } + }, render: function () { return (
diff --git a/browser/main/Components/AddMemberModal.jsx b/browser/main/Components/AddMemberModal.jsx index e96f2b47..7b682156 100644 --- a/browser/main/Components/AddMemberModal.jsx +++ b/browser/main/Components/AddMemberModal.jsx @@ -5,6 +5,8 @@ var LinkedState = require('../Mixins/LinkedState') var Hq = require('../Services/Hq') +var KeyCaster = require('../Mixins/KeyCaster') + var UserStore = require('../Stores/UserStore') var getOptions = function (input, callback) { @@ -26,7 +28,7 @@ var getOptions = function (input, callback) { } module.exports = React.createClass({ - mixins: [LinkedState], + mixins: [LinkedState, KeyCaster('addMemberModal')], propTypes: { team: React.PropTypes.object, close: React.PropTypes.func @@ -37,6 +39,16 @@ module.exports = React.createClass({ role: 'member' } }, + onKeyCast: function (e) { + switch (e.status) { + case 'closeModal': + this.props.close() + break + case 'submitAddMemberModal': + this.handleSubmit() + break + } + }, handleSubmit: function () { Hq .addMember(this.props.team.name, { diff --git a/browser/main/Components/CodeDeleteModal.jsx b/browser/main/Components/CodeDeleteModal.jsx index dd9503bf..b7dbc147 100644 --- a/browser/main/Components/CodeDeleteModal.jsx +++ b/browser/main/Components/CodeDeleteModal.jsx @@ -2,19 +2,26 @@ var React = require('react') var Hq = require('../Services/Hq') +var KeyCaster = require('../Mixins/KeyCaster') + var PlanetStore = require('../Stores/PlanetStore') module.exports = React.createClass({ + mixins: [KeyCaster('codeDeleteModal')], propTypes: { planet: React.PropTypes.object, code: React.PropTypes.object, close: React.PropTypes.func }, - componentDidMount: function () { - React.findDOMNode(this).focus() - }, - stopPropagation: function (e) { - e.stopPropagation() + onKeyCast: function (e) { + switch (e.status) { + case 'submitCodeDeleteModal': + this.submit() + break + case 'closeModal': + this.props.close() + break + } }, submit: function () { var planet = this.props.planet diff --git a/browser/main/Components/CodeEditModal.jsx b/browser/main/Components/CodeEditModal.jsx index 8877cafa..7b070db6 100644 --- a/browser/main/Components/CodeEditModal.jsx +++ b/browser/main/Components/CodeEditModal.jsx @@ -7,13 +7,19 @@ module.exports = React.createClass({ code: React.PropTypes.object, planet: React.PropTypes.object }, + componentDidMount: function () { + // TODO: Hacked!! should fix later + setTimeout(function () { + React.findDOMNode(this.refs.form.refs.description).focus() + }.bind(this), 1) + }, render: function () { return (

Edit Code

- +
) } diff --git a/browser/main/Components/CodeEditor.jsx b/browser/main/Components/CodeEditor.jsx index 6cf3a4a7..4402ecd2 100644 --- a/browser/main/Components/CodeEditor.jsx +++ b/browser/main/Components/CodeEditor.jsx @@ -6,6 +6,7 @@ module.exports = React.createClass({ propTypes: { code: React.PropTypes.string, mode: React.PropTypes.string, + className: React.PropTypes.string, onChange: React.PropTypes.func }, componentDidMount: function () { @@ -52,7 +53,7 @@ module.exports = React.createClass({ }, render: function () { return ( -
+
) } }) diff --git a/browser/main/Components/CodeForm.jsx b/browser/main/Components/CodeForm.jsx index e80dc6af..47f1a75b 100644 --- a/browser/main/Components/CodeForm.jsx +++ b/browser/main/Components/CodeForm.jsx @@ -5,6 +5,7 @@ var Select = require('react-select') var Hq = require('../Services/Hq') var LinkedState = require('../Mixins/LinkedState') +var KeyCaster = require('../Mixins/KeyCaster') var PlanetStore = require('../Stores/PlanetStore') @@ -29,7 +30,7 @@ var getOptions = function (input, callback) { } module.exports = React.createClass({ - mixins: [LinkedState], + mixins: [LinkedState, KeyCaster('codeForm')], propTypes: { planet: React.PropTypes.object, close: React.PropTypes.func, @@ -55,6 +56,16 @@ module.exports = React.createClass({ code: code } }, + onKeyCast: function (e) { + switch (e.status) { + case 'submitCodeForm': + this.submit() + break + case 'closeModal': + this.props.close() + break + } + }, handleModeChange: function (selected) { var code = this.state.code code.mode = selected diff --git a/browser/main/Components/CodeViewer.jsx b/browser/main/Components/CodeViewer.jsx index bd20fe2f..6818490b 100644 --- a/browser/main/Components/CodeViewer.jsx +++ b/browser/main/Components/CodeViewer.jsx @@ -5,7 +5,8 @@ var ace = window.ace module.exports = React.createClass({ propTypes: { code: React.PropTypes.string, - mode: React.PropTypes.string + mode: React.PropTypes.string, + className: React.PropTypes.string }, componentDidMount: function () { var el = React.findDOMNode(this.refs.target) @@ -46,7 +47,7 @@ module.exports = React.createClass({ }, render: function () { return ( -
+
) } }) diff --git a/browser/main/Components/ContactModal.jsx b/browser/main/Components/ContactModal.jsx index 5fc7cc84..e2818f06 100644 --- a/browser/main/Components/ContactModal.jsx +++ b/browser/main/Components/ContactModal.jsx @@ -1,11 +1,12 @@ var React = require('react') var LinkedState = require('../Mixins/LinkedState') +var KeyCaster = require('../Mixins/KeyCaster') var Hq = require('../Services/Hq') module.exports = React.createClass({ - mixins: [LinkedState], + mixins: [LinkedState, KeyCaster('contactModal')], propTypes: { close: React.PropTypes.func }, @@ -18,6 +19,23 @@ module.exports = React.createClass({ } } }, + onKeyCast: function (e) { + switch (e.status) { + case 'closeModal': + this.props.close() + break + case 'submitContactModal': + if (this.state.isSent) { + this.props.close() + return + } + this.sendEmail() + break + } + }, + componentDidMount: function () { + React.findDOMNode(this.refs.title).focus() + }, sendEmail: function () { Hq.sendEmail(this.state.mail) .then(function (res) { @@ -36,7 +54,7 @@ module.exports = React.createClass({
- +