Skip to content

Commit 4591cc0

Browse files
authored
Merge pull request #2 from houselearning/mathsite-search
remove search from index but add it as a src
2 parents 0d9119f + 13a6a8d commit 4591cc0

File tree

3 files changed

+55
-105
lines changed

3 files changed

+55
-105
lines changed

404.html

Lines changed: 1 addition & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<script src="https://houselearning.github.io/feedback.js"></script>
99
<script src="https://cdn.tailwindcss.com"></script>
1010
<script src="/cookiebanner.js"></script>
11+
<script src="/docs/search.js"></script>
1112

1213
<script>
1314
tailwind.config = {
@@ -91,59 +92,6 @@ <h1 class="text-5xl font-extrabold text-gray-900 mb-4">
9192
&copy; 2024 HouseLearning Foundation. All Rights Reserved.
9293
</div>
9394
</footer>
94-
<script>
95-
let docsData = [];
9695

97-
// Fetch docs.json on page load
98-
fetch("/docs/docs.json")
99-
.then(res => res.json())
100-
.then(data => docsData = data)
101-
.catch(err => console.error("Failed to load docs.json:", err));
102-
103-
const input = document.getElementById("docsSearchInput");
104-
const resultsBox = document.getElementById("docsSearchResults");
105-
106-
input.addEventListener("input", () => {
107-
const q = input.value.trim().toLowerCase();
108-
109-
if (q.length === 0) {
110-
resultsBox.classList.add("hidden");
111-
resultsBox.innerHTML = "";
112-
return;
113-
}
114-
115-
const matches = docsData.filter(item =>
116-
item.title.toLowerCase().includes(q) ||
117-
(item.description && item.description.toLowerCase().includes(q))
118-
);
119-
120-
if (matches.length === 0) {
121-
resultsBox.innerHTML = `
122-
<div class="p-4 text-sm text-gray-500">No results found.</div>
123-
`;
124-
resultsBox.classList.remove("hidden");
125-
return;
126-
}
127-
128-
resultsBox.innerHTML = matches
129-
.map(item => `
130-
<a href="${item.link}"
131-
class="block p-4 border-b last:border-b-0 border-gray-100 hover:bg-gray-50 transition rounded-lg">
132-
<div class="font-semibold text-gray-900">${item.title}</div>
133-
<div class="text-sm text-gray-600">${item.description || ""}</div>
134-
</a>
135-
`)
136-
.join("");
137-
138-
resultsBox.classList.remove("hidden");
139-
});
140-
141-
// Click-away close
142-
document.addEventListener("click", (e) => {
143-
if (!resultsBox.contains(e.target) && e.target !== input) {
144-
resultsBox.classList.add("hidden");
145-
}
146-
});
147-
</script>
14896
</body>
14997
</html>

index.html

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<script src="https://houselearning.github.io/home/main.js"></script>
1313
<script src="https://cdn.tailwindcss.com"></script>
1414
<script src="/cookiebanner.js"></script>
15+
<script src="/docs/search.js"></script>
1516
<!-- Configure Tailwind for Inter font and custom colors -->
1617
<script>
1718
tailwind.config = {
@@ -178,58 +179,7 @@ <h2 class="text-2xl font-bold text-gray-900 mb-3">Can't Find What You Need?</h2>
178179
</div>
179180
</footer>
180181
<script>
181-
let docsData = [];
182-
183-
// Fetch docs.json on page load
184-
fetch("/docs/docs.json")
185-
.then(res => res.json())
186-
.then(data => docsData = data)
187-
.catch(err => console.error("Failed to load docs.json:", err));
188-
189-
const input = document.getElementById("docsSearchInput");
190-
const resultsBox = document.getElementById("docsSearchResults");
191-
192-
input.addEventListener("input", () => {
193-
const q = input.value.trim().toLowerCase();
194-
195-
if (q.length === 0) {
196-
resultsBox.classList.add("hidden");
197-
resultsBox.innerHTML = "";
198-
return;
199-
}
200-
201-
const matches = docsData.filter(item =>
202-
item.title.toLowerCase().includes(q) ||
203-
(item.description && item.description.toLowerCase().includes(q))
204-
);
205-
206-
if (matches.length === 0) {
207-
resultsBox.innerHTML = `
208-
<div class="p-4 text-sm text-gray-500">No results found.</div>
209-
`;
210-
resultsBox.classList.remove("hidden");
211-
return;
212-
}
213-
214-
resultsBox.innerHTML = matches
215-
.map(item => `
216-
<a href="${item.link}"
217-
class="block p-4 border-b last:border-b-0 border-gray-100 hover:bg-gray-50 transition rounded-lg">
218-
<div class="font-semibold text-gray-900">${item.title}</div>
219-
<div class="text-sm text-gray-600">${item.description || ""}</div>
220-
</a>
221-
`)
222-
.join("");
223-
224-
resultsBox.classList.remove("hidden");
225-
});
226-
227-
// Click-away close
228-
document.addEventListener("click", (e) => {
229-
if (!resultsBox.contains(e.target) && e.target !== input) {
230-
resultsBox.classList.add("hidden");
231-
}
232-
});
182+
233183
</script>
234184

235185
</body>

search.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
let docsData = [];
2+
3+
// Fetch docs.json on page load
4+
fetch("/docs/docs.json")
5+
.then(res => res.json())
6+
.then(data => docsData = data)
7+
.catch(err => console.error("Failed to load docs.json:", err));
8+
9+
const input = document.getElementById("docsSearchInput");
10+
const resultsBox = document.getElementById("docsSearchResults");
11+
12+
input.addEventListener("input", () => {
13+
const q = input.value.trim().toLowerCase();
14+
15+
if (q.length === 0) {
16+
resultsBox.classList.add("hidden");
17+
resultsBox.innerHTML = "";
18+
return;
19+
}
20+
21+
const matches = docsData.filter(item =>
22+
item.title.toLowerCase().includes(q) ||
23+
(item.description && item.description.toLowerCase().includes(q))
24+
);
25+
26+
if (matches.length === 0) {
27+
resultsBox.innerHTML = `
28+
<div class="p-4 text-sm text-gray-500">No results found.</div>
29+
`;
30+
resultsBox.classList.remove("hidden");
31+
return;
32+
}
33+
34+
resultsBox.innerHTML = matches
35+
.map(item => `
36+
<a href="${item.link}"
37+
class="block p-4 border-b last:border-b-0 border-gray-100 hover:bg-gray-50 transition rounded-lg">
38+
<div class="font-semibold text-gray-900">${item.title}</div>
39+
<div class="text-sm text-gray-600">${item.description || ""}</div>
40+
</a>
41+
`)
42+
.join("");
43+
44+
resultsBox.classList.remove("hidden");
45+
});
46+
47+
// Click-away close
48+
document.addEventListener("click", (e) => {
49+
if (!resultsBox.contains(e.target) && e.target !== input) {
50+
resultsBox.classList.add("hidden");
51+
}
52+
});

0 commit comments

Comments
 (0)