mirror of
https://github.com/JonasunderscoreJones/wiki.jonasjones.dev.git
synced 2025-10-23 06:09:18 +02:00
Added Search bar
This commit is contained in:
parent
5b6eb52140
commit
1ed6ed08b0
3 changed files with 41 additions and 3 deletions
|
@ -1,13 +1,17 @@
|
||||||
<script>
|
<script>
|
||||||
import NavbarList from "./NavbarList.svelte";
|
import NavbarList from "./NavbarList.svelte";
|
||||||
|
|
||||||
|
let searchterm = "";
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container navbar">
|
<div class="container navbar">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<input type="text" bind:value={searchterm} placeholder="Search Pages (Alpha)..." />
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<h2>Pages</h2>
|
<h2>Pages</h2>
|
||||||
<div class="navbar-links">
|
<div class="navbar-links">
|
||||||
<NavbarList />
|
<NavbarList {searchterm} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<script>
|
<script>
|
||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
|
|
||||||
let data = import.meta.glob("/src/routes/**/+page.md");
|
let data = import.meta.glob("/src/routes/**/+page.md");
|
||||||
let paths = data;
|
let paths = data;
|
||||||
|
|
||||||
|
@ -36,7 +35,8 @@
|
||||||
return nestedList;
|
return nestedList;
|
||||||
}
|
}
|
||||||
|
|
||||||
const nestedFolders = buildHierarchy(paths);
|
let nestedFolders = buildHierarchy(paths);
|
||||||
|
console.log(nestedFolders);
|
||||||
|
|
||||||
function createHtmlList(obj, parentPath = "", depth = 0) {
|
function createHtmlList(obj, parentPath = "", depth = 0) {
|
||||||
let html = "";
|
let html = "";
|
||||||
|
@ -68,6 +68,31 @@
|
||||||
|
|
||||||
//const renderedList = `<ul>${renderNestedList(nestedFolders)}</ul>`;
|
//const renderedList = `<ul>${renderNestedList(nestedFolders)}</ul>`;
|
||||||
let renderedList = createHtmlList(nestedFolders);
|
let renderedList = createHtmlList(nestedFolders);
|
||||||
|
|
||||||
|
function filterObject(obj, filterString) {
|
||||||
|
if (filterString === '') {
|
||||||
|
return obj; // If filterString is empty, return the original object
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const key in obj) {
|
||||||
|
if (typeof obj[key] === 'object' && Object.keys(obj[key]).length > 0) {
|
||||||
|
obj[key] = filterObject(obj[key], filterString);
|
||||||
|
if (Object.keys(obj[key]).length === 0) {
|
||||||
|
delete obj[key]; // Remove the branch if it becomes empty after filtering
|
||||||
|
}
|
||||||
|
} else if (!key.includes(filterString)) {
|
||||||
|
delete obj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
export let searchterm;
|
||||||
|
$: {
|
||||||
|
nestedFolders = buildHierarchy(paths);
|
||||||
|
nestedFolders = filterObject(nestedFolders, searchterm);
|
||||||
|
renderedList = createHtmlList(nestedFolders);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{@html renderedList}
|
{@html renderedList}
|
||||||
|
|
|
@ -132,6 +132,15 @@ details a {
|
||||||
white-space: initial;
|
white-space: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
background-color: var(--container-background-color);
|
||||||
|
border: 1px solid var(--container-background-color);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
color: var(--text-color);
|
||||||
|
border: 3px solid var(--background-color);
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 900px) {
|
@media screen and (max-width: 900px) {
|
||||||
.container {
|
.container {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue