aboutsummaryrefslogtreecommitdiffhomepage
path: root/inc/awesomplete-multiple-tags.js
blob: faecb417858e3dd05487d5f3e7000f4d602a7bda (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var awp = Awesomplete.$;
var autocompleteFields = document.querySelectorAll('input[data-multiple]');
[].forEach.call(autocompleteFields, function(autocompleteField) {
    awesomplete = new Awesomplete(awp(autocompleteField), {
        filter: function (text, input) {
            return Awesomplete.FILTER_CONTAINS(text, input.match(/[^ ]*$/)[0]);
        },
        replace: function (text) {
            var before = this.input.value.match(/^.+ \s*|/)[0];
            this.input.value = before + text + " ";
        },
        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
 */
function awesompleteUniqueTag(selector) {
    var input = document.querySelector(selector);
    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;
    });
}