diff --git a/browser/main/HomePage.js b/browser/main/HomePage.js index 4ed0f81b..3f1ba34d 100644 --- a/browser/main/HomePage.js +++ b/browser/main/HomePage.js @@ -34,7 +34,7 @@ class HomePage extends React.Component { let { nav, top, list, detail } = this.refs if (top.isInputFocused() && !e.metaKey) { - if (e.keyCode === 13 || e.keyCode === 27) top.blurInput() + if (e.keyCode === 13 || e.keyCode === 27) top.escape() return } @@ -68,7 +68,7 @@ class HomePage extends React.Component { } // `detail`の`openDeleteConfirmMenu`が`true`なら呼ばれない。 - if (e.keyCode === 27) { + if (e.keyCode === 27 || (e.keyCode === 70 && e.metaKey)) { top.focusInput() } diff --git a/browser/main/HomePage/ArticleList.js b/browser/main/HomePage/ArticleList.js index 3fc307b8..cc81423e 100644 --- a/browser/main/HomePage/ArticleList.js +++ b/browser/main/HomePage/ArticleList.js @@ -15,6 +15,7 @@ export default class ArticleList extends React.Component { clearInterval(this.refreshTimer) } + // 移動ができなかったらfalseを返す: selectPriorArticle () { let { articles, activeArticle, dispatch } = this.props let targetIndex = articles.indexOf(activeArticle) - 1 @@ -22,7 +23,9 @@ export default class ArticleList extends React.Component { if (targetArticle != null) { dispatch(switchArticle(targetArticle.key)) + return true } + return false } selectNextArticle () { @@ -32,7 +35,9 @@ export default class ArticleList extends React.Component { if (targetArticle != null) { dispatch(switchArticle(targetArticle.key)) + return true } + return false } handleArticleClick (article) { diff --git a/browser/main/HomePage/ArticleTopBar.js b/browser/main/HomePage/ArticleTopBar.js index c78ecf37..bd0eae1c 100644 --- a/browser/main/HomePage/ArticleTopBar.js +++ b/browser/main/HomePage/ArticleTopBar.js @@ -1,13 +1,22 @@ import React, { PropTypes } from 'react' import ReactDOM from 'react-dom' import ExternalLink from 'boost/components/ExternalLink' -import { setSearchFilter } from 'boost/actions' +import { setSearchFilter, clearSearch } from 'boost/actions' export default class ArticleTopBar extends React.Component { isInputFocused () { return document.activeElement === ReactDOM.findDOMNode(this.refs.searchInput) } + escape () { + let { status, dispatch } = this.props + if (status.search.length > 0) { + dispatch(clearSearch()) + return + } + this.blurInput() + } + focusInput () { ReactDOM.findDOMNode(this.refs.searchInput).focus() }