add toggle functionality to ac

This commit is contained in:
Jiiks 2018-08-22 19:49:53 +03:00
parent 2617925cd8
commit 41a5a3a791
3 changed files with 20 additions and 1 deletions

View File

@ -63,4 +63,10 @@ export default new class EmoteAc extends BuiltinModule {
}
}
toggle(sterm) {
if (sterm.length > 1) return false;
return true;
}
}

View File

@ -44,6 +44,11 @@ export default new class AutoComplete {
return this.sets.hasOwnProperty(prefix);
}
toggle(prefix, sterm) {
if (!this.sets[prefix].toggle) return false;
return this.sets[prefix].toggle(sterm);
}
items(prefix, sterm) {
if (!this.validPrefix(prefix)) return [];
return this.sets[prefix].acsearch(sterm);

View File

@ -66,7 +66,9 @@
const { which, key } = e;
if (key === 'ArrowDown' || key === 'ArrowUp') this.traverse(key);
else if (key !== 'Tab' && key !== 'Enter') return;
else if (key === 'ArrowLeft' || key === 'ArrowRight') {
if (!this.toggle(e)) return;
} else if (key !== 'Tab' && key !== 'Enter') return;
e.stopPropagation();
e.preventDefault();
@ -119,6 +121,12 @@
this.insertText(this.ta.selectionStart - this.fsterm.length, this.search.items[this.selectedIndex].value.replaceWith);
this.open = false;
this.search = { type: null, items: [] };
},
toggle(e) {
const { selectionEnd, value } = e.target;
const sterm = value.slice(0, selectionEnd).split(/\s+/g).pop();
const prefix = sterm.slice(0, 1);
return this.controller.toggle(prefix, sterm);
}
}
}