Skip to content

Commit a505227

Browse files
committed
enhance editor UX
1 parent 673503b commit a505227

3 files changed

Lines changed: 31 additions & 12 deletions

File tree

browser/components/ModeSelect.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ export default class ModeSelect extends React.Component {
4343
}
4444

4545
handleModeOptionClick (modeName) {
46-
console.log(modeName)
4746
return e => {
4847
this.props.onChange(modeName)
4948
this.setState({
@@ -90,7 +89,7 @@ export default class ModeSelect extends React.Component {
9089
let targetMode = filteredModes[this.state.focusIndex]
9190
if (targetMode != null) {
9291
this.props.onChange(targetMode.name)
93-
this.handleBlur()
92+
this.setIdle()
9493
}
9594
}
9695
break
@@ -113,16 +112,18 @@ export default class ModeSelect extends React.Component {
113112

114113
handleBlur (e) {
115114
if (e.target !== ReactDOM.findDOMNode(this.refs.search)) {
116-
this.setState({
117-
mode: IDLE_MODE,
118-
search: '',
119-
focusIndex: 0
120-
}, function () {
121-
if (this.props.onBlur) this.props.onBlur()
122-
})
115+
this.setIdle()
123116
}
124117
}
125118

119+
setIdle () {
120+
this.setState({
121+
mode: IDLE_MODE,
122+
search: '',
123+
focusIndex: 0
124+
})
125+
}
126+
126127
render () {
127128
let className = this.props.className != null
128129
? `ModeSelect ${this.props.className}`
@@ -168,6 +169,5 @@ ModeSelect.propTypes = {
168169
className: PropTypes.string,
169170
value: PropTypes.string,
170171
onChange: PropTypes.func,
171-
onKeyDown: PropTypes.func,
172-
onBlur: PropTypes.func
172+
onKeyDown: PropTypes.func
173173
}

browser/main/HomePage/ArticleDetail/index.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ export default class ArticleDetail extends React.Component {
9292
if (isModalOpen()) return true
9393
this.handleUncache()
9494
}
95+
this.titleHandler = e => {
96+
if (isModalOpen()) return true
97+
let titleEl = ReactDOM.findDOMNode(this.refs.title)
98+
titleEl.focus()
99+
titleEl.select()
100+
}
95101
this.editHandler = e => {
96102
if (isModalOpen()) return true
97103
this.refs.editor.switchEditMode()
@@ -112,6 +118,7 @@ export default class ArticleDetail extends React.Component {
112118
// ipc.on('detail-save', this.saveHandler)
113119
ipc.on('detail-delete', this.deleteHandler)
114120
ipc.on('detail-uncache', this.uncacheHandler)
121+
ipc.on('detail-title', this.titleHandler)
115122
ipc.on('detail-edit', this.editHandler)
116123
}
117124

@@ -121,6 +128,7 @@ export default class ArticleDetail extends React.Component {
121128
// ipc.removeListener('detail-save', this.saveHandler)
122129
ipc.removeListener('detail-delete', this.deleteHandler)
123130
ipc.removeListener('detail-uncache', this.uncacheHandler)
131+
ipc.removeListener('detail-title', this.titleHandler)
124132
ipc.removeListener('detail-edit', this.editHandler)
125133
}
126134

@@ -192,6 +200,7 @@ export default class ArticleDetail extends React.Component {
192200
})
193201

194202
dispatch(updateArticle(article))
203+
this.switchEditMode()
195204
}
196205

197206
handleContentChange (value) {
@@ -222,14 +231,18 @@ export default class ArticleDetail extends React.Component {
222231
handleModeSelectKeyDown (e) {
223232
if (e.keyCode === 9 && !e.shiftKey) {
224233
e.preventDefault()
225-
this.refs.editor.switchEditMode()
234+
this.switchEditMode()
226235
}
227236
if (e.keyCode === 9 && e.shiftKey) {
228237
e.preventDefault()
229238
ReactDOM.findDOMNode(this.refs.title).focus()
230239
}
231240
}
232241

242+
switchEditMode () {
243+
this.refs.editor.switchEditMode()
244+
}
245+
233246
render () {
234247
let { folders, status, tags, activeArticle, modified, user } = this.props
235248
if (activeArticle == null) return this.renderEmpty()

browser/main/HomePage/ArticleList.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export default class ArticleList extends React.Component {
2121
componentDidMount () {
2222
this.refreshTimer = setInterval(() => this.forceUpdate(), 60 * 1000)
2323
ipc.on('list-focus', this.focusHandler)
24+
this.focus()
2425
}
2526

2627
componentWillUnmount () {
@@ -102,6 +103,11 @@ export default class ArticleList extends React.Component {
102103
remote.getCurrentWebContents().send('detail-delete')
103104
}
104105

106+
if (e.keyCode === 84) {
107+
e.preventDefault()
108+
remote.getCurrentWebContents().send('detail-title')
109+
}
110+
105111
if (e.keyCode === 69) {
106112
e.preventDefault()
107113
remote.getCurrentWebContents().send('detail-edit')

0 commit comments

Comments
 (0)