diff options
author | Sam X. Chen <sam.xi.chen@gmail.com> | 2019-09-17 09:27:23 -0400 |
---|---|---|
committer | Sam X. Chen <sam.xi.chen@gmail.com> | 2019-09-17 09:27:23 -0400 |
commit | 194b6ad46e2d711ad5ab5e5df6d97ccea38acea8 (patch) | |
tree | 9fcb8dd7fc0a84f61e23913a4ac6da8e36c7e581 | |
parent | b31c42acc44e94f41907e6e50fdcc05b9b6886ac (diff) | |
download | wekan-194b6ad46e2d711ad5ab5e5df6d97ccea38acea8.tar.gz wekan-194b6ad46e2d711ad5ab5e5df6d97ccea38acea8.tar.bz2 wekan-194b6ad46e2d711ad5ab5e5df6d97ccea38acea8.zip |
BugFix: in richer editor @ autocomplete doesn't really insert the user name into comment properly
-rwxr-xr-x | client/components/main/editor.js | 34 | ||||
-rw-r--r-- | client/lib/textComplete.js | 1 |
2 files changed, 29 insertions, 6 deletions
diff --git a/client/components/main/editor.js b/client/components/main/editor.js index 91403086..2035f62f 100755 --- a/client/components/main/editor.js +++ b/client/components/main/editor.js @@ -156,25 +156,47 @@ Template.editor.onRendered(() => { } return undefined; }; + let popupShown = false; inputs.each(function(idx, input) { mSummernotes[idx] = $(input).summernote({ placeholder, callbacks: { + onKeydown(e) { + if (popupShown) { + e.preventDefault(); + } + }, + onKeyup(e) { + if (popupShown) { + e.preventDefault(); + } + }, onInit(object) { const originalInput = this; + const setAutocomplete = function(jEditor) { + if (jEditor !== undefined) { + jEditor.escapeableTextComplete(mentions).on({ + 'textComplete:show'() { + popupShown = true; + }, + 'textComplete:hide'() { + popupShown = false; + }, + }); + } + }; $(originalInput).on('submitted', function() { // resetCommentInput has been called if (!this.value) { const sn = getSummernote(this); - sn && sn.summernote('reset'); - object && object.editingArea.find('.note-placeholder').show(); + sn && sn.summernote('code', ''); + setAutocomplete(jEditor); + //object && object.editingArea.find('.note-placeholder').show(); } }); const jEditor = object && object.editable; const toolbar = object && object.toolbar; - if (jEditor !== undefined) { - jEditor.escapeableTextComplete(mentions); - } + setAutocomplete(jEditor); if (toolbar !== undefined) { const fBtn = toolbar.find('.btn-fullscreen'); fBtn.on('click', function() { @@ -264,7 +286,7 @@ Template.editor.onRendered(() => { const someNote = getSummernote(object); const original = someNote.summernote('code'); const cleaned = cleanPastedHTML(original); //this is where to call whatever clean function you want. I have mine in a different file, called CleanPastedHTML. - someNote.summernote('reset'); //clear original + someNote.summernote('code', ''); //clear original someNote.summernote('pasteHTML', cleaned); //this sets the displayed content editor to the cleaned pasted code. }; setTimeout(function() { diff --git a/client/lib/textComplete.js b/client/lib/textComplete.js index 0261d7f6..8b6dc1f7 100644 --- a/client/lib/textComplete.js +++ b/client/lib/textComplete.js @@ -45,6 +45,7 @@ $.fn.escapeableTextComplete = function(strategies, options, ...otherArgs) { }); }, }); + return this; }; EscapeActions.register('textcomplete', () => {}, () => dropdownMenuIsOpened, { |