mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-06-06 10:44:33 +08: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:
@ -8,7 +8,15 @@ export class CodeEditor extends Component {
|
||||
*/
|
||||
editor = null;
|
||||
|
||||
callback = null;
|
||||
/**
|
||||
* @type {?Function}
|
||||
*/
|
||||
saveCallback = null;
|
||||
|
||||
/**
|
||||
* @type {?Function}
|
||||
*/
|
||||
cancelCallback = null;
|
||||
|
||||
history = {};
|
||||
|
||||
@ -115,15 +123,16 @@ export class CodeEditor extends Component {
|
||||
}
|
||||
|
||||
save() {
|
||||
if (this.callback) {
|
||||
this.callback(this.editor.getContent(), this.languageInput.value);
|
||||
if (this.saveCallback) {
|
||||
this.saveCallback(this.editor.getContent(), this.languageInput.value);
|
||||
}
|
||||
this.hide();
|
||||
}
|
||||
|
||||
async open(code, language, callback) {
|
||||
async open(code, language, saveCallback, cancelCallback) {
|
||||
this.languageInput.value = language;
|
||||
this.callback = callback;
|
||||
this.saveCallback = saveCallback;
|
||||
this.cancelCallback = cancelCallback;
|
||||
|
||||
await this.show();
|
||||
this.languageInputChange(language);
|
||||
@ -141,6 +150,9 @@ export class CodeEditor extends Component {
|
||||
this.editor.focus();
|
||||
}, () => {
|
||||
this.addHistory();
|
||||
if (this.cancelCallback) {
|
||||
this.cancelCallback();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -9,9 +9,16 @@ function elemIsCodeBlock(elem) {
|
||||
* @param {function(string, string)} callback (Receives (code: string,language: string)
|
||||
*/
|
||||
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);
|
||||
editor.focus();
|
||||
editor.selection.moveToBookmark(bookMark);
|
||||
}, () => {
|
||||
editor.focus();
|
||||
editor.selection.moveToBookmark(bookMark);
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user