Skip to content

Commit d73b567

Browse files
committed
inhance UX & search case insensitive
1 parent 787bb0a commit d73b567

4 files changed

Lines changed: 46 additions & 32 deletions

File tree

browser/main/Detail/MarkdownNoteDetail.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ class MarkdownNoteDetail extends React.Component {
175175
handleDeleteMenuClick (e) {
176176
this.setState({
177177
isDeleting: true
178+
}, () => {
179+
this.refs.deleteConfirmButton.focus()
178180
})
179181
}
180182

@@ -191,6 +193,7 @@ class MarkdownNoteDetail extends React.Component {
191193
}
192194
ee.once('list:moved', dispatchHandler)
193195
ee.emit('list:next')
196+
ee.emit('list:focus')
194197
})
195198
}
196199

@@ -200,6 +203,10 @@ class MarkdownNoteDetail extends React.Component {
200203
})
201204
}
202205

206+
handleDeleteKeyDown (e) {
207+
if (e.keyCode === 27) this.handleDeleteCancelButtonClick(e)
208+
}
209+
203210
render () {
204211
let { storages, config } = this.props
205212
let { note } = this.state
@@ -211,7 +218,10 @@ class MarkdownNoteDetail extends React.Component {
211218
>
212219
{this.state.isDeleting
213220
? <div styleName='info'>
214-
<div styleName='info-delete'>
221+
<div styleName='info-delete'
222+
tabIndex='-1'
223+
onKeyDown={(e) => this.handleDeleteKeyDown(e)}
224+
>
215225

216226
<span styleName='info-delete-message'>
217227
Are you sure to delete this note?
@@ -221,6 +231,7 @@ class MarkdownNoteDetail extends React.Component {
221231
>Cancel</button>
222232
<button styleName='info-delete-confirmButton'
223233
onClick={(e) => this.handleDeleteConfirmButtonClick(e)}
234+
ref='deleteConfirmButton'
224235
>Confirm</button>
225236
</div>
226237
</div>

browser/main/Detail/SnippetNoteDetail.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ class SnippetNoteDetail extends React.Component {
186186
handleDeleteMenuClick (e) {
187187
this.setState({
188188
isDeleting: true
189+
}, () => {
190+
this.refs.deleteConfirmButton.focus()
189191
})
190192
}
191193

@@ -300,6 +302,10 @@ class SnippetNoteDetail extends React.Component {
300302
}
301303
}
302304

305+
handleDeleteKeyDown (e) {
306+
if (e.keyCode === 27) this.handleDeleteCancelButtonClick(e)
307+
}
308+
303309
render () {
304310
let { storages, config } = this.props
305311
let { note } = this.state
@@ -383,7 +389,10 @@ class SnippetNoteDetail extends React.Component {
383389
>
384390
{this.state.isDeleting
385391
? <div styleName='info'>
386-
<div styleName='info-delete'>
392+
<div styleName='info-delete'
393+
tabIndex='-1'
394+
onKeyDown={(e) => this.handleDeleteKeyDown(e)}
395+
>
387396

388397
<span styleName='info-delete-message'>
389398
Are you sure to delete this note?
@@ -393,6 +402,7 @@ class SnippetNoteDetail extends React.Component {
393402
>Cancel</button>
394403
<button styleName='info-delete-confirmButton'
395404
onClick={(e) => this.handleDeleteConfirmButtonClick(e)}
405+
ref='deleteConfirmButton'
396406
>Confirm</button>
397407
</div>
398408
</div>

browser/main/NoteList/index.js

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,24 @@ class NoteList extends React.Component {
1616
this.selectPriorNoteHandler = () => {
1717
this.selectPriorNote()
1818
}
19+
this.focusHandler = () => {
20+
this.refs.root.focus()
21+
}
1922
}
2023

2124
componentDidMount () {
2225
this.refreshTimer = setInterval(() => this.forceUpdate(), 60 * 1000)
2326
ee.on('list:next', this.selectNextNoteHandler)
2427
ee.on('list:prior', this.selectPriorNoteHandler)
28+
ee.on('lost:focus', this.focusHandler)
2529
}
2630

2731
componentWillUnmount () {
2832
clearInterval(this.refreshTimer)
2933

3034
ee.off('list:next', this.selectNextNoteHandler)
3135
ee.off('list:prior', this.selectPriorNoteHandler)
36+
ee.off('lost:focus', this.focusHandler)
3237
}
3338

3439
componentDidUpdate () {
@@ -120,34 +125,20 @@ class NoteList extends React.Component {
120125
handleNoteListKeyDown (e) {
121126
if (e.metaKey || e.ctrlKey) return true
122127

123-
// if (e.keyCode === 65 && !e.shiftKey) {
124-
// e.preventDefault()
125-
// remote.getCurrentWebContents().send('top-new-post')
126-
// }
127-
128-
// if (e.keyCode === 65 && e.shiftKey) {
129-
// e.preventDefault()
130-
// remote.getCurrentWebContents().send('nav-new-folder')
131-
// }
132-
133-
// if (e.keyCode === 68) {
134-
// e.preventDefault()
135-
// remote.getCurrentWebContents().send('detail-delete')
136-
// }
137-
138-
// if (e.keyCode === 84) {
139-
// e.preventDefault()
140-
// remote.getCurrentWebContents().send('detail-title')
141-
// }
128+
if (e.keyCode === 65 && !e.shiftKey) {
129+
e.preventDefault()
130+
ee.emit('top:new-note')
131+
}
142132

143-
// if (e.keyCode === 69) {
144-
// e.preventDefault()
145-
// }
133+
if (e.keyCode === 68) {
134+
e.preventDefault()
135+
ee.emit('detail:delete')
136+
}
146137

147-
// if (e.keyCode === 83) {
148-
// e.preventDefault()
149-
// remote.getCurrentWebContents().send('detail-save')
150-
// }
138+
if (e.keyCode === 69) {
139+
e.preventDefault()
140+
ee.emit('detail:focus')
141+
}
151142

152143
if (e.keyCode === 38) {
153144
e.preventDefault()
@@ -275,7 +266,7 @@ class NoteList extends React.Component {
275266
<div className='NoteList'
276267
styleName='root'
277268
ref='root'
278-
tabIndex='0'
269+
tabIndex='-1'
279270
onKeyDown={(e) => this.handleNoteListKeyDown(e)}
280271
style={this.props.style}
281272
>

browser/main/TopBar/index.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,21 @@ class TopBar extends React.Component {
6363
searchBlocks.forEach((block) => {
6464
if (block.match(/^#.+/)) {
6565
let tag = block.match(/#(.+)/)[1]
66+
let regExp = new RegExp(_.escapeRegExp(tag), 'i')
6667
notes = notes
6768
.filter((note) => {
6869
if (!_.isArray(note.tags)) return false
6970
return note.tags.some((_tag) => {
70-
return _tag === tag
71+
return _tag.match(regExp)
7172
})
7273
})
7374
} else {
75+
let regExp = new RegExp(_.escapeRegExp(block), 'i')
7476
notes = notes.filter((note) => {
7577
if (note.type === 'SNIPPET_NOTE') {
76-
return note.description.match(block)
78+
return note.description.match(regExp)
7779
} else if (note.type === 'MARKDOWN_NOTE') {
78-
return note.content.match(block)
80+
return note.content.match(regExp)
7981
}
8082
return false
8183
})

0 commit comments

Comments
 (0)