popover implementation
This commit is contained in:
parent
2b432d7f0b
commit
4a3c4fdef5
9 changed files with 81 additions and 18 deletions
|
@ -11,9 +11,6 @@
|
|||
}
|
||||
</style>
|
||||
<script>
|
||||
const index = {{$.Site.Data.linkIndex.index}}
|
||||
const links = {{$.Site.Data.linkIndex.links}}
|
||||
const content = {{$.Site.Data.contentIndex}}
|
||||
const curPage = {{ strings.TrimRight "/" .Page.RelPermalink }}
|
||||
const pathColors = {{$.Site.Data.graphConfig.paths}}
|
||||
let depth = {{$.Site.Data.graphConfig.depth}}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<head>
|
||||
<!-- Meta tags -->
|
||||
<meta charset="UTF-8">
|
||||
<meta name="description" content="{{$.Site.Data.config.description}}">
|
||||
<meta name="description" content="{{if .IsHome}}{{$.Site.Data.config.description}}{{else}}{{.Summary}}{{end}}">
|
||||
<title>{{ if .Title }}{{ .Title }}{{ else }}{{ $.Site.Data.config.page_title }}{{ end }}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" type="image/png" href="/icon.png" />
|
||||
|
@ -23,5 +23,13 @@
|
|||
{{.Content | safeJS }}
|
||||
</script>
|
||||
{{- end -}}
|
||||
|
||||
<!-- Preload page vars -->
|
||||
<script>
|
||||
const content = {{$.Site.Data.contentIndex}}
|
||||
const index = {{$.Site.Data.linkIndex.index}}
|
||||
const links = {{$.Site.Data.linkIndex.links}}
|
||||
</script>
|
||||
</head>
|
||||
{{ template "_internal/google_analytics.html" . }}
|
||||
{{ partial "popover.html" .}}
|
||||
|
|
29
layouts/partials/popover.html
Normal file
29
layouts/partials/popover.html
Normal file
|
@ -0,0 +1,29 @@
|
|||
<script>
|
||||
function htmlToElement(html) {
|
||||
const template = document.createElement('template')
|
||||
html = html.trim()
|
||||
template.innerHTML = html
|
||||
return template.content.firstChild
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
[...document.getElementsByClassName("internal-link")]
|
||||
.forEach(li => {
|
||||
const linkDest = content[li.dataset.src]
|
||||
if (linkDest) {
|
||||
const popoverElement = `<div class="popover">
|
||||
<h3>${linkDest.title}</h3>
|
||||
<p>${removeMarkdown(linkDest.content).split(" ", 15).join(" ")}...</p>
|
||||
</div>`
|
||||
const el = htmlToElement(popoverElement)
|
||||
li.appendChild(el)
|
||||
li.addEventListener("mouseover", () => {
|
||||
el.classList.add("visible")
|
||||
})
|
||||
li.addEventListener("mouseout", () => {
|
||||
el.classList.remove("visible")
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
</script>
|
|
@ -89,8 +89,7 @@
|
|||
}
|
||||
})
|
||||
|
||||
const scrapedContent = {{$.Site.Data.contentIndex}}
|
||||
for (const [key, value] of Object.entries(scrapedContent)) {
|
||||
for (const [key, value] of Object.entries(content)) {
|
||||
contentIndex.add({
|
||||
id: key,
|
||||
title: value.title,
|
||||
|
@ -151,8 +150,8 @@
|
|||
const fetch = id => ({
|
||||
id,
|
||||
url: id,
|
||||
title: scrapedContent[id].title,
|
||||
content: scrapedContent[id].content
|
||||
title: content[id].title,
|
||||
content: content[id].content
|
||||
})
|
||||
|
||||
const source = document.getElementById('search-bar')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue