mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-14 02:06:29 +00:00
enhance editor UX
This commit is contained in:
@@ -43,7 +43,6 @@ export default class ModeSelect extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleModeOptionClick (modeName) {
|
handleModeOptionClick (modeName) {
|
||||||
console.log(modeName)
|
|
||||||
return e => {
|
return e => {
|
||||||
this.props.onChange(modeName)
|
this.props.onChange(modeName)
|
||||||
this.setState({
|
this.setState({
|
||||||
@@ -90,7 +89,7 @@ export default class ModeSelect extends React.Component {
|
|||||||
let targetMode = filteredModes[this.state.focusIndex]
|
let targetMode = filteredModes[this.state.focusIndex]
|
||||||
if (targetMode != null) {
|
if (targetMode != null) {
|
||||||
this.props.onChange(targetMode.name)
|
this.props.onChange(targetMode.name)
|
||||||
this.handleBlur()
|
this.setIdle()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
@@ -113,15 +112,17 @@ export default class ModeSelect extends React.Component {
|
|||||||
|
|
||||||
handleBlur (e) {
|
handleBlur (e) {
|
||||||
if (e.target !== ReactDOM.findDOMNode(this.refs.search)) {
|
if (e.target !== ReactDOM.findDOMNode(this.refs.search)) {
|
||||||
|
this.setIdle()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setIdle () {
|
||||||
this.setState({
|
this.setState({
|
||||||
mode: IDLE_MODE,
|
mode: IDLE_MODE,
|
||||||
search: '',
|
search: '',
|
||||||
focusIndex: 0
|
focusIndex: 0
|
||||||
}, function () {
|
|
||||||
if (this.props.onBlur) this.props.onBlur()
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
let className = this.props.className != null
|
let className = this.props.className != null
|
||||||
@@ -168,6 +169,5 @@ ModeSelect.propTypes = {
|
|||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
value: PropTypes.string,
|
value: PropTypes.string,
|
||||||
onChange: PropTypes.func,
|
onChange: PropTypes.func,
|
||||||
onKeyDown: PropTypes.func,
|
onKeyDown: PropTypes.func
|
||||||
onBlur: PropTypes.func
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,12 @@ export default class ArticleDetail extends React.Component {
|
|||||||
if (isModalOpen()) return true
|
if (isModalOpen()) return true
|
||||||
this.handleUncache()
|
this.handleUncache()
|
||||||
}
|
}
|
||||||
|
this.titleHandler = e => {
|
||||||
|
if (isModalOpen()) return true
|
||||||
|
let titleEl = ReactDOM.findDOMNode(this.refs.title)
|
||||||
|
titleEl.focus()
|
||||||
|
titleEl.select()
|
||||||
|
}
|
||||||
this.editHandler = e => {
|
this.editHandler = e => {
|
||||||
if (isModalOpen()) return true
|
if (isModalOpen()) return true
|
||||||
this.refs.editor.switchEditMode()
|
this.refs.editor.switchEditMode()
|
||||||
@@ -112,6 +118,7 @@ export default class ArticleDetail extends React.Component {
|
|||||||
// ipc.on('detail-save', this.saveHandler)
|
// ipc.on('detail-save', this.saveHandler)
|
||||||
ipc.on('detail-delete', this.deleteHandler)
|
ipc.on('detail-delete', this.deleteHandler)
|
||||||
ipc.on('detail-uncache', this.uncacheHandler)
|
ipc.on('detail-uncache', this.uncacheHandler)
|
||||||
|
ipc.on('detail-title', this.titleHandler)
|
||||||
ipc.on('detail-edit', this.editHandler)
|
ipc.on('detail-edit', this.editHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,6 +128,7 @@ export default class ArticleDetail extends React.Component {
|
|||||||
// ipc.removeListener('detail-save', this.saveHandler)
|
// ipc.removeListener('detail-save', this.saveHandler)
|
||||||
ipc.removeListener('detail-delete', this.deleteHandler)
|
ipc.removeListener('detail-delete', this.deleteHandler)
|
||||||
ipc.removeListener('detail-uncache', this.uncacheHandler)
|
ipc.removeListener('detail-uncache', this.uncacheHandler)
|
||||||
|
ipc.removeListener('detail-title', this.titleHandler)
|
||||||
ipc.removeListener('detail-edit', this.editHandler)
|
ipc.removeListener('detail-edit', this.editHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,6 +200,7 @@ export default class ArticleDetail extends React.Component {
|
|||||||
})
|
})
|
||||||
|
|
||||||
dispatch(updateArticle(article))
|
dispatch(updateArticle(article))
|
||||||
|
this.switchEditMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
handleContentChange (value) {
|
handleContentChange (value) {
|
||||||
@@ -222,7 +231,7 @@ export default class ArticleDetail extends React.Component {
|
|||||||
handleModeSelectKeyDown (e) {
|
handleModeSelectKeyDown (e) {
|
||||||
if (e.keyCode === 9 && !e.shiftKey) {
|
if (e.keyCode === 9 && !e.shiftKey) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
this.refs.editor.switchEditMode()
|
this.switchEditMode()
|
||||||
}
|
}
|
||||||
if (e.keyCode === 9 && e.shiftKey) {
|
if (e.keyCode === 9 && e.shiftKey) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@@ -230,6 +239,10 @@ export default class ArticleDetail extends React.Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switchEditMode () {
|
||||||
|
this.refs.editor.switchEditMode()
|
||||||
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
let { folders, status, tags, activeArticle, modified, user } = this.props
|
let { folders, status, tags, activeArticle, modified, user } = this.props
|
||||||
if (activeArticle == null) return this.renderEmpty()
|
if (activeArticle == null) return this.renderEmpty()
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ export default class ArticleList extends React.Component {
|
|||||||
componentDidMount () {
|
componentDidMount () {
|
||||||
this.refreshTimer = setInterval(() => this.forceUpdate(), 60 * 1000)
|
this.refreshTimer = setInterval(() => this.forceUpdate(), 60 * 1000)
|
||||||
ipc.on('list-focus', this.focusHandler)
|
ipc.on('list-focus', this.focusHandler)
|
||||||
|
this.focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount () {
|
componentWillUnmount () {
|
||||||
@@ -102,6 +103,11 @@ export default class ArticleList extends React.Component {
|
|||||||
remote.getCurrentWebContents().send('detail-delete')
|
remote.getCurrentWebContents().send('detail-delete')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e.keyCode === 84) {
|
||||||
|
e.preventDefault()
|
||||||
|
remote.getCurrentWebContents().send('detail-title')
|
||||||
|
}
|
||||||
|
|
||||||
if (e.keyCode === 69) {
|
if (e.keyCode === 69) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
remote.getCurrentWebContents().send('detail-edit')
|
remote.getCurrentWebContents().send('detail-edit')
|
||||||
|
|||||||
Reference in New Issue
Block a user