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 (
)
}
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/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({
-
+
diff --git a/browser/main/Components/EditProfileModal.jsx b/browser/main/Components/EditProfileModal.jsx
index cf9e8c86..c128ab9a 100644
--- a/browser/main/Components/EditProfileModal.jsx
+++ b/browser/main/Components/EditProfileModal.jsx
@@ -5,17 +5,19 @@ var React = require('react/addons')
var Hq = require('../Services/Hq')
var LinkedState = require('../Mixins/LinkedState')
+var KeyCaster = require('../Mixins/KeyCaster')
var UserStore = require('../Stores/UserStore')
module.exports = React.createClass({
- mixins: [LinkedState],
+ mixins: [LinkedState, KeyCaster('editProfileModal')],
propTypes: {
user: React.PropTypes.shape({
name: React.PropTypes.string,
profileName: React.PropTypes.string,
email: React.PropTypes.string
- })
+ }),
+ close: React.PropTypes.func
},
getInitialState: function () {
var user = this.props.user
@@ -34,6 +36,13 @@ module.exports = React.createClass({
passwordSubmitStatus: null
}
},
+ onKeyCast: function (e) {
+ switch (e.status) {
+ case 'closeModal':
+ this.props.close()
+ break
+ }
+ },
selectTab: function (tabName) {
return function () {
this.setState({currentTab: tabName})
diff --git a/browser/main/Components/HomeNavigator.jsx b/browser/main/Components/HomeNavigator.jsx
index c39e31f4..18e72b3a 100644
--- a/browser/main/Components/HomeNavigator.jsx
+++ b/browser/main/Components/HomeNavigator.jsx
@@ -96,6 +96,10 @@ module.exports = React.createClass({
handleLogoutClick: function () {
this.openModal(LogoutModal, {transitionTo: this.transitionTo})
},
+ switchPlanetByIndex: function (index) {
+ var planetProps = this.refs.planets.props.children[index - 1].props
+ this.transitionTo('planet', {userName: planetProps.userName, planetName: planetProps.planetName})
+ },
render: function () {
var params = this.getParams()
@@ -110,12 +114,12 @@ module.exports = React.createClass({
return team.Planets == null ? planets : planets.concat(team.Planets)
}, []))).map(function (planet, index) {
return (
-
+
{planet.name[0]}
{planet.userName}/{planet.name}
- ⌘{index + 1}
+ {index < 9 ? (⌘{index + 1}
) : null}
)
})
@@ -128,7 +132,7 @@ module.exports = React.createClass({
{popup}
-
+