]>
git.immae.eu Git - github/shaarli/Shaarli.git/blob - assets/vintage/js/base.js
15b664cedd10ae683955f46b38deac0494db4610
1 import Awesomplete
from 'awesomplete';
2 import 'awesomplete/awesomplete.css';
5 const autocompleteFields
= document
.querySelectorAll('input[data-multiple]');
6 const tagsSeparatorElement
= document
.querySelector('input[name="tags_separator"]');
7 const tagsSeparator
= tagsSeparatorElement
? tagsSeparatorElement
.value
|| " " : " ";
9 [...autocompleteFields
].forEach((autocompleteField
) => {
10 const awesome
= new Awesomplete(Awesomplete
.$(autocompleteField
));
12 // Tags are separated by separator
13 awesome
.filter
= (text
, input
) => Awesomplete
.FILTER_CONTAINS(
15 input
.match(new RegExp(`[^${tagsSeparator}]*$`))[0])
17 // Insert new selected tag in the input
18 awesome
.replace
= (text
) => {
19 const before
= awesome
.input
.value
.match(new RegExp(`^.+${tagsSeparator}+|`))[0];
20 awesome
.input
.value
= `${before}${text}${tagsSeparator}`;
22 // Highlight found items
23 awesome
.item
= (text
, input
) => Awesomplete
.ITEM(text
, input
.match(new RegExp(`[^${tagsSeparator}]*$`))[0]);
24 // Don't display already selected items
25 const reg
= new RegExp(`/(\w+)${tagsSeparator}/g`);
27 awesome
.data
= (item
, input
) => {
28 while ((match
= reg
.exec(input
))) {
29 if (item
=== match
[1]) {