diff options
Diffstat (limited to 'assets/vintage/js/base.js')
-rw-r--r-- | assets/vintage/js/base.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/assets/vintage/js/base.js b/assets/vintage/js/base.js new file mode 100644 index 00000000..66830b59 --- /dev/null +++ b/assets/vintage/js/base.js | |||
@@ -0,0 +1,30 @@ | |||
1 | import Awesomplete from 'awesomplete'; | ||
2 | import 'awesomplete/awesomplete.css'; | ||
3 | |||
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); | ||
24 | } | ||
25 | } | ||
26 | |||
27 | awesomplete.list = proposedTags; | ||
28 | }); | ||
29 | }); | ||
30 | })(); | ||