]>
git.immae.eu Git - github/shaarli/Shaarli.git/blob - inc/awesomplete-multiple-tags.js
1 /** @licstart The following is the entire license notice for the
2 * JavaScript code in this page.
4 * Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
5 * (c) 2011-2017 The Shaarli Community, see AUTHORS
7 * This software is provided 'as-is', without any express or implied warranty.
8 * In no event will the authors be held liable for any damages arising from
9 * the use of this software.
11 * Permission is granted to anyone to use this software for any purpose,
12 * including commercial applications, and to alter it and redistribute it
13 * freely, subject to the following restrictions:
15 * 1. The origin of this software must not be misrepresented; you must not
16 * claim that you wrote the original software. If you use this software
17 * in a product, an acknowledgment in the product documentation would
18 * be appreciated but is not required.
20 * 2. Altered source versions must be plainly marked as such, and must
21 * not be misrepresented as being the original software.
23 * 3. This notice may not be removed or altered from any source distribution.
25 * @licend The above is the entire license notice
26 * for the JavaScript code in this page.
29 var awp
= Awesomplete
.$;
30 var autocompleteFields
= document
.querySelectorAll('input[data-multiple]');
31 [].forEach
.call(autocompleteFields
, function(autocompleteField
) {
32 awesomplete
= new Awesomplete(awp(autocompleteField
), {
33 filter: function (text
, input
) {
34 return Awesomplete
.FILTER_CONTAINS(text
, input
.match(/[^ ]*$/)[0]);
36 replace: function (text
) {
37 var before
= this.input
.value
.match(/^.+ \s
*|/)[0];
38 this.input
.value
= before
+ text
+ " ";
45 * Remove already selected items from autocompletion list.
46 * HTML list is never updated, so removing a tag will add it back to awesomplete.
48 * FIXME: This a workaround waiting for awesomplete to handle this.
49 * https://github.com/LeaVerou/awesomplete/issues/16749
51 function awesompleteUniqueTag(selector
) {
52 var input
= document
.querySelector(selector
);
53 input
.addEventListener('input', function()
55 proposedTags
= input
.getAttribute('data-list').replace(/,/g
, '').split(' ');
57 while((match
= reg
.exec(input
.value
)) !== null) {
58 id
= proposedTags
.indexOf(match
[1]);
60 proposedTags
.splice(id
, 1);
64 awesomplete
.list
= proposedTags
;