mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
Added WYSWIYG editor code editor cancel focus return
Focus now returns to the editor properly when you quit out the code editor without saving. This also sets the return location to be correct on normal saving (Would sometimes jump to the end of the document). For #4109.
This commit is contained in:
parent
573bc3ec45
commit
3bcbf6b9c5
@ -8,7 +8,15 @@ export class CodeEditor extends Component {
|
|||||||
*/
|
*/
|
||||||
editor = null;
|
editor = null;
|
||||||
|
|
||||||
callback = null;
|
/**
|
||||||
|
* @type {?Function}
|
||||||
|
*/
|
||||||
|
saveCallback = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {?Function}
|
||||||
|
*/
|
||||||
|
cancelCallback = null;
|
||||||
|
|
||||||
history = {};
|
history = {};
|
||||||
|
|
||||||
@ -115,15 +123,16 @@ export class CodeEditor extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
save() {
|
save() {
|
||||||
if (this.callback) {
|
if (this.saveCallback) {
|
||||||
this.callback(this.editor.getContent(), this.languageInput.value);
|
this.saveCallback(this.editor.getContent(), this.languageInput.value);
|
||||||
}
|
}
|
||||||
this.hide();
|
this.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
async open(code, language, callback) {
|
async open(code, language, saveCallback, cancelCallback) {
|
||||||
this.languageInput.value = language;
|
this.languageInput.value = language;
|
||||||
this.callback = callback;
|
this.saveCallback = saveCallback;
|
||||||
|
this.cancelCallback = cancelCallback;
|
||||||
|
|
||||||
await this.show();
|
await this.show();
|
||||||
this.languageInputChange(language);
|
this.languageInputChange(language);
|
||||||
@ -141,6 +150,9 @@ export class CodeEditor extends Component {
|
|||||||
this.editor.focus();
|
this.editor.focus();
|
||||||
}, () => {
|
}, () => {
|
||||||
this.addHistory();
|
this.addHistory();
|
||||||
|
if (this.cancelCallback) {
|
||||||
|
this.cancelCallback();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,9 +9,16 @@ function elemIsCodeBlock(elem) {
|
|||||||
* @param {function(string, string)} callback (Receives (code: string,language: string)
|
* @param {function(string, string)} callback (Receives (code: string,language: string)
|
||||||
*/
|
*/
|
||||||
function showPopup(editor, code, language, callback) {
|
function showPopup(editor, code, language, callback) {
|
||||||
window.$components.first('code-editor').open(code, language, (newCode, newLang) => {
|
/** @var {CodeEditor} codeEditor * */
|
||||||
|
const codeEditor = window.$components.first('code-editor');
|
||||||
|
const bookMark = editor.selection.getBookmark();
|
||||||
|
codeEditor.open(code, language, (newCode, newLang) => {
|
||||||
callback(newCode, newLang);
|
callback(newCode, newLang);
|
||||||
editor.focus();
|
editor.focus();
|
||||||
|
editor.selection.moveToBookmark(bookMark);
|
||||||
|
}, () => {
|
||||||
|
editor.focus();
|
||||||
|
editor.selection.moveToBookmark(bookMark);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user