-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
93 lines (93 loc) · 3.56 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// Need: let selectedSuggestions: string;
export function autoComplete(options) {
const array = options.data;
const inputElement = options.inputElement;
const clickAction = options.clickAction;
const filtering = options.filtering;
const suggestionContainer = options.suggestionContainer;
inputElement.addEventListener("input", () => {
suggestionContainer.innerHTML = "";
const inputText = inputElement.value;
let filteredSuggestion;
if (filtering == "starts") {
filteredSuggestion = array.filter((item) => item
.toLowerCase()
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.startsWith(inputText));
}
else if (filtering == "all") {
filteredSuggestion = array.filter((item) => item
.toLowerCase()
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.includes(inputText));
}
filteredSuggestion.forEach((suggestion) => {
const suggestionDiv = document.createElement("div");
suggestionDiv.classList.add("suggestionElement");
suggestionDiv.textContent = suggestion;
suggestionDiv.addEventListener("click", () => {
inputElement.value = "";
if (options.clickAction) {
clickAction(suggestion);
}
});
suggestionContainer.appendChild(suggestionDiv);
});
});
document.addEventListener("click", (event) => {
suggestionContainer.innerHTML = "";
});
return suggestionContainer;
}
export function autoCompleteHref(options) {
const data = options.data;
const inputElement = options.inputElement;
const clickAction = options.clickAction;
const filtering = options.filtering;
const suggestionContainer = options.suggestionContainer;
const items = data.map((link) => link.item);
const urls = data.map((link) => link.link);
inputElement.addEventListener("input", () => {
suggestionContainer.innerHTML = "";
const inputText = inputElement.value;
let filteredSuggestion;
if (filtering == "starts") {
filteredSuggestion = items.filter((item) => item
.toLowerCase()
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.startsWith(inputText));
}
else if (filtering == "all") {
filteredSuggestion = items.filter((item) => item
.toLowerCase()
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.includes(inputText));
}
let count = 0;
filteredSuggestion.forEach((suggestion) => {
const suggestionDiv = document.createElement("div");
suggestionDiv.classList.add("suggestionElement");
const suggestionA = document.createElement("a");
suggestionA.textContent = suggestion;
suggestionA.href = urls[count];
count++;
suggestionDiv.addEventListener("click", () => {
inputElement.value = "";
if (options.clickAction) {
clickAction(suggestion);
}
});
suggestionContainer.appendChild(suggestionDiv);
suggestionDiv.appendChild(suggestionA);
});
});
document.addEventListener("click", (event) => {
suggestionContainer.innerHTML = "";
});
return suggestionContainer;
}
//# sourceMappingURL=index.js.map