X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/58cadce052f5cc3c9ce2bc12f88a93cac310699a..refs/pull/4903/head:/resources/js/components/code-editor.js diff --git a/resources/js/components/code-editor.js b/resources/js/components/code-editor.js index 9cedd2314..1c68c2048 100644 --- a/resources/js/components/code-editor.js +++ b/resources/js/components/code-editor.js @@ -8,7 +8,15 @@ export class CodeEditor extends Component { */ editor = null; - callback = null; + /** + * @type {?Function} + */ + saveCallback = null; + + /** + * @type {?Function} + */ + cancelCallback = null; history = {}; @@ -74,8 +82,13 @@ export class CodeEditor extends Component { onChildEvent(button.parentElement, '.lang-option-favorite-toggle', 'click', () => { isFavorite = !isFavorite; - const action = isFavorite ? this.favourites.add : this.favourites.delete; - action(language); + + if (isFavorite) { + this.favourites.add(language); + } else { + this.favourites.delete(language); + } + button.setAttribute('data-favourite', isFavorite ? 'true' : 'false'); window.$http.patch('/preferences/update-code-language-favourite', { @@ -110,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); @@ -136,6 +150,9 @@ export class CodeEditor extends Component { this.editor.focus(); }, () => { this.addHistory(); + if (this.cancelCallback) { + this.cancelCallback(); + } }); }