From da066fe6947916ee330f382745423831c126cff9 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 22 Aug 2015 23:57:37 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AE=9F=E8=A3=85=20-=20Hotkey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- browser/main/Components/AboutModal.jsx | 10 +- browser/main/Components/AddMemberModal.jsx | 14 ++- browser/main/Components/CodeDeleteModal.jsx | 17 ++- browser/main/Components/CodeEditModal.jsx | 8 +- browser/main/Components/CodeForm.jsx | 13 ++- browser/main/Components/ContactModal.jsx | 22 +++- browser/main/Components/EditProfileModal.jsx | 13 ++- browser/main/Components/HomeNavigator.jsx | 10 +- browser/main/Components/LaunchModal.jsx | 43 ++++++-- browser/main/Components/LogoutModal.jsx | 13 +++ browser/main/Components/NoteDeleteModal.jsx | 14 ++- browser/main/Components/NoteEditModal.jsx | 8 +- browser/main/Components/NoteForm.jsx | 15 ++- .../main/Components/PlanetArticleDetail.jsx | 2 + browser/main/Components/PlanetArticleList.jsx | 3 - browser/main/Components/PlanetCreateModal.jsx | 14 ++- browser/main/Components/PlanetHeader.jsx | 16 ++- browser/main/Components/PlanetNavigator.jsx | 8 +- .../main/Components/PlanetSettingModal.jsx | 10 +- browser/main/Components/TeamCreateModal.jsx | 18 ++- browser/main/Components/TeamSettingsModal.jsx | 13 ++- browser/main/Containers/HomeContainer.jsx | 12 +- browser/main/Containers/PlanetContainer.jsx | 39 ++++++- browser/main/Mixins/KeyCaster.js | 104 ++++++++++++++++++ 24 files changed, 378 insertions(+), 61 deletions(-) create mode 100644 browser/main/Mixins/KeyCaster.js 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/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({
- +