summaryrefslogtreecommitdiff
path: root/assets/js/components
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-11-27 18:06:10 -0500
committerFrederic Guillot <fred@kanboard.net>2016-11-27 18:06:10 -0500
commitde1b9416d2c359e57f386760cfa29f2a12bf5b51 (patch)
treeb2ceb99c1f1dec1581d13df3e728243e5b384d52 /assets/js/components
parentd8b0423d152ca27682b001f2c4d386d9c5dd361e (diff)
Improve suggest menu string replacement
Diffstat (limited to 'assets/js/components')
-rw-r--r--assets/js/components/suggest-menu.js22
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();