aboutsummaryrefslogtreecommitdiffhomepage
path: root/assets/vintage/js/base.js
blob: 66830b59dd7e90e1c6c6dcbf03869a12284156e1 (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
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;
    });
  });
})();