--- /dev/null
+import Awesomplete from 'awesomplete';
+import 'awesomplete/awesomplete.css';
+
+(() => {
+ const awp = Awesomplete.$;
+ const autocompleteFields = document.querySelectorAll('input[data-multiple]');
+ [...autocompleteFields].forEach((autocompleteField) => {
+ const awesomplete = new Awesomplete(awp(autocompleteField));
+ awesomplete.filter = (text, input) => Awesomplete.FILTER_CONTAINS(text, input.match(/[^ ]*$/)[0]);
+ awesomplete.replace = (text) => {
+ const before = awesomplete.input.value.match(/^.+ \s*|/)[0];
+ awesomplete.input.value = `${before}${text} `;
+ };
+ awesomplete.minChars = 1;
+
+ autocompleteField.addEventListener('input', () => {
+ const proposedTags = autocompleteField.getAttribute('data-list').replace(/,/g, '').split(' ');
+ const reg = /(\w+) /g;
+ let match;
+ while ((match = reg.exec(autocompleteField.value)) !== null) {
+ const id = proposedTags.indexOf(match[1]);
+ if (id !== -1) {
+ proposedTags.splice(id, 1);
+ }
+ }
+
+ awesomplete.list = proposedTags;
+ });
+ });
+})();