]>
Commit | Line | Data |
---|---|---|
d42da543 A |
1 | import Awesomplete from 'awesomplete'; |
2 | import 'awesomplete/awesomplete.css'; | |
49bc541d | 3 | |
d42da543 A |
4 | (() => { |
5 | const awp = Awesomplete.$; | |
6 | const autocompleteFields = document.querySelectorAll('input[data-multiple]'); | |
7 | [...autocompleteFields].forEach((autocompleteField) => { | |
8 | const awesomplete = new Awesomplete(awp(autocompleteField)); | |
9 | awesomplete.filter = (text, input) => Awesomplete.FILTER_CONTAINS(text, input.match(/[^ ]*$/)[0]); | |
10 | awesomplete.replace = (text) => { | |
11 | const before = awesomplete.input.value.match(/^.+ \s*|/)[0]; | |
12 | awesomplete.input.value = `${before}${text} `; | |
13 | }; | |
14 | awesomplete.minChars = 1; | |
15 | ||
16 | autocompleteField.addEventListener('input', () => { | |
17 | const proposedTags = autocompleteField.getAttribute('data-list').replace(/,/g, '').split(' '); | |
18 | const reg = /(\w+) /g; | |
19 | let match; | |
20 | while ((match = reg.exec(autocompleteField.value)) !== null) { | |
21 | const id = proposedTags.indexOf(match[1]); | |
22 | if (id !== -1) { | |
23 | proposedTags.splice(id, 1); | |
49bc541d | 24 | } |
d42da543 A |
25 | } |
26 | ||
27 | awesomplete.list = proposedTags; | |
49bc541d | 28 | }); |
d42da543 A |
29 | }); |
30 | })(); |