]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - assets/vintage/js/base.js
Merge tag 'v0.10.4' into stable
[github/shaarli/Shaarli.git] / assets / vintage / js / base.js
diff --git a/assets/vintage/js/base.js b/assets/vintage/js/base.js
new file mode 100644 (file)
index 0000000..66830b5
--- /dev/null
@@ -0,0 +1,30 @@
+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;
+    });
+  });
+})();