feat: add 'all' option to focus command, fix #2181

This commit is contained in:
Philipp Kühn 2021-11-22 10:17:06 +01:00
parent cd14731612
commit 3c571c9a3f
4 changed files with 15 additions and 4 deletions

View File

@ -6,7 +6,7 @@ When a user clicks on a button outside the editor, the browser sets the focus to
See also: [setTextSelection](/api/commands/set-text-selection), [blur](/api/commands/blur)
## Parameters
`position: 'start' | 'end' | number | boolean | null (false)`
`position: 'start' | 'end' | 'all' | number | boolean | null (false)`
By default, its restoring the cursor position (and text selection). Pass a position to move the cursor too.
@ -21,6 +21,9 @@ editor.commands.focus('start')
// Set the cursor to the last position
editor.commands.focus('end')
// Selects the whole document
editor.commands.focus('all')
// Set the cursor to position 10
editor.commands.focus(10)
```

View File

@ -241,6 +241,7 @@ With `autofocus` you can force the cursor to jump in the editor on initializatio
| --------- | ------------------------------------------------------ |
| `'start'` | Sets the focus to the beginning of the document. |
| `'end'` | Sets the focus to the end of the document. |
| `'all'` | Selects the whole document. |
| `Number` | Sets the focus to a specific position in the document. |
| `true` | Enables autofocus. |
| `false` | Disables autofocus. |

View File

@ -16,15 +16,22 @@ function resolveSelection(state: EditorState, position: FocusPosition = null) {
}
}
if (position === 'end') {
const { size } = state.doc.content
const { size } = state.doc.content
if (position === 'end') {
return {
from: size,
to: size,
}
}
if (position === 'all') {
return {
from: 0,
to: size,
}
}
return {
from: position,
to: position,

View File

@ -212,7 +212,7 @@ export type ChainedCommands = {
export type CanCommands = SingleCommands & { chain: () => ChainedCommands }
export type FocusPosition = 'start' | 'end' | number | boolean | null
export type FocusPosition = 'start' | 'end' | 'all' | number | boolean | null
export type Range = {
from: number,