]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - tpl/editlink.html
Avoid tag duplicates
[github/shaarli/Shaarli.git] / tpl / editlink.html
index a32748ab48f11b3ac49783103059d07c40886e5a..3733ca2185a94ca9a3df7cf48410c17175e476eb 100644 (file)
@@ -42,7 +42,7 @@
 {if="($GLOBALS['config']['OPEN_SHAARLI'] || isLoggedIn())"}
 <script>
     $ = Awesomplete.$;
-    new Awesomplete($('input[data-multiple]'), {
+    awesomplete = new Awesomplete($('input[data-multiple]'), {
         filter: function(text, input) {
             return Awesomplete.FILTER_CONTAINS(text, input.match(/[^ ]*$/)[0]);
         },
         },
         minChars: 1
     });
+
+    /**
+     * Remove already selected items from autocompletion list.
+     * HTML list is never updated, so removing a tag will add it back to awesomplete.
+     *
+     * FIXME: This a workaround waiting for awesomplete to handle this.
+     *  https://github.com/LeaVerou/awesomplete/issues/16749
+     */
+    var input = document.querySelector('#lf_tags');
+    input.addEventListener('input', function()
+    {
+        proposedTags = input.getAttribute('data-list').replace(/,/g, '').split(' ');
+        reg = /(\w+) /g;
+        while((match = reg.exec(input.value)) !== null) {
+            id = proposedTags.indexOf(match[1]);
+            if(id != -1 ) {
+                proposedTags.splice(id, 1);
+            }
+        }
+
+        awesomplete.list = proposedTags;
+    });
 </script>
 {/if}
 </body>