fix(search): use anchor element (closes #698) (#717)

* fix(search): use anchor element

This addresses #698 to allow search title to include links for SPA

Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>

* fix: formatter

Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>

* chore: move itemTile to `a`

Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>

* chore: remove nested a title

Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>

* chore(search): remove spaNavigate

since now searchResult is an `a` item

Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>

---------

Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
This commit is contained in:
Aaron Pham 2024-01-21 23:50:00 -05:00 committed by GitHub
parent 015b4f6a15
commit 0403fa70aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -222,16 +222,16 @@ document.addEventListener("nav", async (e: unknown) => {
const resultToHTML = ({ slug, title, content, tags }: Item) => { const resultToHTML = ({ slug, title, content, tags }: Item) => {
const htmlTags = tags.length > 0 ? `<ul>${tags.join("")}</ul>` : `` const htmlTags = tags.length > 0 ? `<ul>${tags.join("")}</ul>` : ``
const button = document.createElement("button") const itemTile = document.createElement("a")
button.classList.add("result-card") itemTile.classList.add("result-card")
button.id = slug itemTile.id = slug
button.innerHTML = `<h3>${title}</h3>${htmlTags}<p>${content}</p>` itemTile.href = new URL(resolveRelative(currentSlug, slug), location.toString()).toString()
button.addEventListener("click", () => { itemTile.innerHTML = `<h3>${title}</h3>${htmlTags}<p>${content}</p>`
const targ = resolveRelative(currentSlug, slug) itemTile.addEventListener("click", (event) => {
window.spaNavigate(new URL(targ, window.location.toString())) if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return
hideSearch() hideSearch()
}) })
return button return itemTile
} }
function displayResults(finalResults: Item[]) { function displayResults(finalResults: Item[]) {