mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 09:46:22 +00:00
focus content editor after create new Note
This commit is contained in:
@@ -42,6 +42,18 @@ class MarkdownEditor extends React.Component {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
focus () {
|
||||||
|
if (this.state.status === 'PREVIEW') {
|
||||||
|
this.setState({
|
||||||
|
status: 'CODE'
|
||||||
|
}, () => {
|
||||||
|
this.refs.code.focus()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.refs.code.focus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
reload () {
|
reload () {
|
||||||
this.refs.code.reload()
|
this.refs.code.reload()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import StarButton from './StarButton'
|
|||||||
import TagSelect from './TagSelect'
|
import TagSelect from './TagSelect'
|
||||||
import FolderSelect from './FolderSelect'
|
import FolderSelect from './FolderSelect'
|
||||||
import Repository from 'browser/lib/Repository'
|
import Repository from 'browser/lib/Repository'
|
||||||
|
import Commander from 'browser/main/lib/Commander'
|
||||||
|
|
||||||
class NoteDetail extends React.Component {
|
class NoteDetail extends React.Component {
|
||||||
constructor (props) {
|
constructor (props) {
|
||||||
@@ -19,6 +20,21 @@ class NoteDetail extends React.Component {
|
|||||||
this.dispatchTimer = null
|
this.dispatchTimer = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidMount () {
|
||||||
|
Commander.bind('note-detail', this)
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount () {
|
||||||
|
Commander.release(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
fire (command) {
|
||||||
|
switch (command) {
|
||||||
|
case 'focus':
|
||||||
|
this.refs.content.focus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentWillReceiveProps (nextProps) {
|
componentWillReceiveProps (nextProps) {
|
||||||
if (nextProps.note.key !== this.props.note.key) {
|
if (nextProps.note.key !== this.props.note.key) {
|
||||||
if (this.state.isDispatchQueued) {
|
if (this.state.isDispatchQueued) {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class Main extends React.Component {
|
|||||||
listWidth: config.listWidth
|
listWidth: config.listWidth
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount () {
|
componentDidMount () {
|
||||||
let { dispatch } = this.props
|
let { dispatch } = this.props
|
||||||
|
|
||||||
|
|||||||
@@ -12,14 +12,11 @@ class NoteList 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)
|
|
||||||
// this.focus()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount () {
|
componentWillUnmount () {
|
||||||
// clearInterval(this.refreshTimer)
|
clearInterval(this.refreshTimer)
|
||||||
// ipc.removeListener('list-focus', this.focusHandler)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate () {
|
componentDidUpdate () {
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
background-color $ui-tooltip-backgroundColor
|
background-color $ui-tooltip-backgroundColor
|
||||||
color $ui-tooltip-text-color
|
color $ui-tooltip-text-color
|
||||||
font-size 10px
|
font-size 10px
|
||||||
margin-left -35px
|
margin-left -25px
|
||||||
margin-top 5px
|
margin-top 5px
|
||||||
padding 5px
|
padding 5px
|
||||||
z-index 1
|
z-index 1
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import styles from './TopBar.styl'
|
|||||||
import activityRecord from 'browser/lib/activityRecord'
|
import activityRecord from 'browser/lib/activityRecord'
|
||||||
import Repository from 'browser/lib/Repository'
|
import Repository from 'browser/lib/Repository'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
|
import Commander from 'browser/main/lib/Commander'
|
||||||
|
|
||||||
const OSX = window.process.platform === 'darwin'
|
const OSX = window.process.platform === 'darwin'
|
||||||
|
|
||||||
@@ -61,7 +62,6 @@ class TopBar extends React.Component {
|
|||||||
Repository
|
Repository
|
||||||
.find(repositoryKey)
|
.find(repositoryKey)
|
||||||
.then((repo) => {
|
.then((repo) => {
|
||||||
console.log(repo)
|
|
||||||
return repo.addNote(newNote)
|
return repo.addNote(newNote)
|
||||||
})
|
})
|
||||||
.then((note) => {
|
.then((note) => {
|
||||||
@@ -79,6 +79,7 @@ class TopBar extends React.Component {
|
|||||||
key: `${note._repository.key}-${note.key}`
|
key: `${note._repository.key}-${note.key}`
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
Commander.fire('note-detail:focus')
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
|
|||||||
31
browser/main/lib/Commander.js
Normal file
31
browser/main/lib/Commander.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
let callees = []
|
||||||
|
|
||||||
|
function bind (name, el) {
|
||||||
|
callees.push({
|
||||||
|
name: name,
|
||||||
|
element: el
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function release (el) {
|
||||||
|
callees = callees.filter((callee) => callee.element !== el)
|
||||||
|
}
|
||||||
|
|
||||||
|
function fire (command) {
|
||||||
|
console.info('COMMAND >>', command)
|
||||||
|
let splitted = command.split(':')
|
||||||
|
let target = splitted[0]
|
||||||
|
let targetCommand = splitted[1]
|
||||||
|
let targetCallees = callees
|
||||||
|
.filter((callee) => callee.name === target)
|
||||||
|
|
||||||
|
targetCallees.forEach((callee) => {
|
||||||
|
callee.element.fire(targetCommand)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
bind,
|
||||||
|
release,
|
||||||
|
fire
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user