]> git.immae.eu Git - github/shaarli/Shaarli.git/blame - inc/awesomplete-multiple-tags.js
Merge pull request #1110 from virtualtam/doc/v0.9.6
[github/shaarli/Shaarli.git] / inc / awesomplete-multiple-tags.js
CommitLineData
b9b41d25
A
1/** @licstart The following is the entire license notice for the
2 * JavaScript code in this page.
3 *
4 * Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
5 * (c) 2011-2017 The Shaarli Community, see AUTHORS
6 *
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.
10 *
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:
14 *
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.
19 *
20 * 2. Altered source versions must be plainly marked as such, and must
21 * not be misrepresented as being the original software.
22 *
23 * 3. This notice may not be removed or altered from any source distribution.
24 *
25 * @licend The above is the entire license notice
26 * for the JavaScript code in this page.
27 */
28
69a1a90c 29var awp = Awesomplete.$;
430ff071
A
30var 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]);
35 },
36 replace: function (text) {
37 var before = this.input.value.match(/^.+ \s*|/)[0];
38 this.input.value = before + text + " ";
39 },
40 minChars: 1
41 })
b39b1bc2
A
42});
43
44/**
45 * Remove already selected items from autocompletion list.
46 * HTML list is never updated, so removing a tag will add it back to awesomplete.
47 *
48 * FIXME: This a workaround waiting for awesomplete to handle this.
49 * https://github.com/LeaVerou/awesomplete/issues/16749
50 */
51function awesompleteUniqueTag(selector) {
52 var input = document.querySelector(selector);
53 input.addEventListener('input', function()
54 {
55 proposedTags = input.getAttribute('data-list').replace(/,/g, '').split(' ');
56 reg = /(\w+) /g;
57 while((match = reg.exec(input.value)) !== null) {
58 id = proposedTags.indexOf(match[1]);
59 if(id != -1 ) {
60 proposedTags.splice(id, 1);
61 }
62 }
63
64 awesomplete.list = proposedTags;
65 });
66}