diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-11-27 18:06:10 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-11-27 18:06:10 -0500 |
commit | de1b9416d2c359e57f386760cfa29f2a12bf5b51 (patch) | |
tree | b2ceb99c1f1dec1581d13df3e728243e5b384d52 /assets/js/components | |
parent | d8b0423d152ca27682b001f2c4d386d9c5dd361e (diff) |
Improve suggest menu string replacement
Diffstat (limited to 'assets/js/components')
-rw-r--r-- | assets/js/components/suggest-menu.js | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/assets/js/components/suggest-menu.js b/assets/js/components/suggest-menu.js index f0e6dfd1..22a58787 100644 --- a/assets/js/components/suggest-menu.js +++ b/assets/js/components/suggest-menu.js @@ -38,13 +38,27 @@ KB.component('suggest-menu', function(containerElement, options) { var element = KB.find('.suggest-menu-item.active'); var value = element.data('value'); var trigger = element.data('trigger'); - var position = containerElement.value.lastIndexOf(trigger) + 1; - var content = containerElement.value.substring(0, position); + var content = containerElement.value; + var text = getLastWord(containerElement); + var substitute = trigger + value + ' '; + var before = content.substring(0, containerElement.selectionStart - text.length); + var after = content.substring(containerElement.selectionEnd); + var position = before.length + substitute.length; + + containerElement.value = before + substitute + after; + containerElement.setSelectionRange(position, position); - containerElement.value = content + value; destroy(); } + function getLastWord(element) { + var lines = element.value.substring(0, element.selectionEnd).split("\n"); + var lastLine = lines[lines.length - 1]; + var words = lastLine.split(' '); + console.log(words); + return words[words.length - 1]; + } + function getParentElement() { var selectors = ['.popover-form', '#popover-content', 'body']; @@ -103,7 +117,7 @@ KB.component('suggest-menu', function(containerElement, options) { } function search(element) { - var text = element.value.substring(element.value.lastIndexOf(' ') + 1, element.selectionEnd); + var text = getLastWord(element); var trigger = getTrigger(text, options.triggers); destroy(); |