diff --git a/assets/js/callouts.js b/assets/js/callouts.js new file mode 100644 index 000000000..080bbb489 --- /dev/null +++ b/assets/js/callouts.js @@ -0,0 +1,6 @@ +const addCollapsibleCallouts = () => { + const collapsibleCallouts = document.querySelectorAll("blockquote.callout-collapsible"); + collapsibleCallouts.forEach(el => el.addEventListener('click', event => { + event.currentTarget.classList.toggle("callout-collapsed"); + })); +} diff --git a/assets/styles/callouts.scss b/assets/styles/callouts.scss index 22079f4b8..98d3cd5cd 100644 --- a/assets/styles/callouts.scss +++ b/assets/styles/callouts.scss @@ -52,7 +52,18 @@ --callout-warning-accent: #7f4800 !important; } -blockquote[class$="-callout"] { +blockquote.callout-collapsible { + cursor: pointer; +} +blockquote.callout-collapsed { + border-bottom-right-radius: 5px !important; + padding-bottom: 0 !important; +} +blockquote.callout-collapsed > p:not(:first-child) { + display: none !important; +} + +blockquote[class*="-callout"] { margin-right: 0; border-radius: 5px; position: relative; @@ -61,14 +72,14 @@ blockquote[class$="-callout"] { color: var(--dark); background-color: var(--outlinegray); } -blockquote[class$="-callout"] > p { +blockquote[class*="-callout"] > p { border-top-right-radius: 5px; padding-left: 1em; padding-right: 1em; color: var(--dark); background-color: var(--outlinegray); } -blockquote[class$="-callout"] > p:first-child::after { +blockquote[class*="-callout"] > p:first-child::after { display: inline-block; height: 24px; width: 18px; @@ -77,10 +88,11 @@ blockquote[class$="-callout"] > p:first-child::after { left: 6px; top: 0; } -blockquote[class$="-callout"] > p:first-child { +blockquote[class*="-callout"] > p:first-child { font-size: 125%; font-weight: bold; padding-left: 30px; + border-bottom-right-radius: 5px; } blockquote.abstract-callout, diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 3f0566855..d54fef964 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -24,15 +24,15 @@ {{$sass := resources.Match "styles/[!_]*.scss" }} + {{ if (not $.Site.Data.config.enableCallouts) }} + {{ $calloutsCss := resources.Get "styles/callouts.scss" }} + {{$sass = $sass | symdiff (slice $calloutsCss)}} + {{end}} {{$css := slice }} {{range $sass}} {{$scss := . | resources.ToCSS (dict "outputStyle" "compressed") }} {{$css = $css | append $scss}} {{end}} - {{ if $.Site.Data.config.enableCallouts }} - {{ $calloutsCss := resources.Get "styles/callouts.scss" | resources.ToCSS (dict "outputStyle" "compressed") }} - {{$css = $css | append $calloutsCss}} - {{end}} {{$finalCss := $css | resources.Concat "styles.css" | resources.Fingerprint "md5" | resources.Minify }} @@ -62,6 +62,11 @@ {{ end }} + {{ if $.Site.Data.config.enableCallouts }} + {{ $callouts := resources.Get "js/callouts.js" | resources.Fingerprint "md5" | resources.Minify }} + + {{ end }} + {{$linkIndex := resources.Get "indices/linkIndex.json" | resources.Fingerprint "md5" | resources.Minify | }} {{$contentIndex := resources.Get @@ -101,6 +106,10 @@ addTitleToCodeBlocks(); {{ end }} + {{if $.Site.Data.config.enableCallouts -}} + addCollapsibleCallouts(); + {{ end }} + {{if $.Site.Data.config.enableFooter}} const container = document.getElementById("graph-container") // retry if the graph is not ready diff --git a/layouts/partials/textprocessing.html b/layouts/partials/textprocessing.html index 92477d442..f6e89f7eb 100644 --- a/layouts/partials/textprocessing.html +++ b/layouts/partials/textprocessing.html @@ -68,8 +68,14 @@ {{ $finder = index $blockquoteclasses1 $counter }} {{ if (in $finder "[!") }} {{ $inner := index $blockquoteclasses $counter1 }} - {{ $inner = $inner | replaceRE `\[!([a-zA-Z]+)\]` `${1}` }} - {{ $inner = printf "blockquote class=%s-callout" $inner}} + {{ if (in $finder "]-") }} + {{ $inner = $inner | replaceRE `\[!([a-zA-Z]+)\]` `callout-collapsible callout-collapsed ${1}`}} + {{ else if (in $finder "]+") }} + {{ $inner = $inner | replaceRE `\[!([a-zA-Z]+)\]` `callout-collapsible ${1}`}} + {{ else}} + {{ $inner = $inner | replaceRE `\[!([a-zA-Z]+)\]` `${1}` }} + {{ end }} + {{ $inner = printf "blockquote class=\"%s-callout\"" $inner}} {{ $content = replace $content . $inner 1}} {{ $counter1 = add $counter1 1 }} {{ else }}