]>
Commit | Line | Data |
---|---|---|
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 | 29 | var awp = Awesomplete.$; |
430ff071 A |
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]); | |
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 | */ | |
51 | function 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 | } |