Skip to content

Commit f860ff3

Browse files
committed
add an image toggler button
1 parent 0fea2dc commit f860ff3

4 files changed

Lines changed: 45 additions & 0 deletions

File tree

includes/article.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ <h1 class="border-bottom-0">{{ page.title }}</h1>
1717
<button class="btn-link Link--secondary js-print tooltipped tooltipped-n" aria-label="Print this article">
1818
{% include printer-icon %}
1919
</button>
20+
<button class="btn-link Link--secondary js-print tooltipped tooltipped-n" aria-label="Toggle images">
21+
{% include toggle-images %}
22+
</button>
2023
</div>
2124
</div>
2225

includes/toggle-images.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<button type="button" class="btn btn-outline ml-3 toggle-images" id="js-toggle-images" aria-selected="true">
2+
<span id="js-hide-text">{% data ui.toggle_images.hide %}</span>
3+
<span id="js-show-text">{% data ui.toggle_images.show %}</span>
4+
</button>

javascripts/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import devToc from './dev-toc'
2020
import releaseNotes from './release-notes'
2121
import showMore from './show-more'
2222
import airgapLinks from './airgap-links'
23+
import toggleImages from './toggle-images'
2324

2425
document.addEventListener('DOMContentLoaded', async () => {
2526
displayPlatformSpecificContent()
@@ -42,4 +43,5 @@ document.addEventListener('DOMContentLoaded', async () => {
4243
initializeEvents()
4344
experiment()
4445
helpfulness()
46+
toggleImages()
4547
})

javascripts/toggle-images.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// import { sendEvent } from './events'
2+
3+
export default function () {
4+
const toggleImagesBtn = document.getElementById('js-toggle-images')
5+
if (!toggleImagesBtn) return
6+
7+
const hideText = document.getElementById('js-hide-text')
8+
const showText = document.getElementById('js-show-text')
9+
10+
// For localization friendliness, the button HTML includes both show and hide text.
11+
// The button should say "Hide" by default, so we suppress the "Show" text here.
12+
showText.style.display = 'none'
13+
14+
const images = document.querySelectorAll('img')
15+
16+
toggleImagesBtn.addEventListener('click', (e) => {
17+
for (const img of images) {
18+
if (img.style.display === 'none') {
19+
// Show images
20+
img.style.display = 'block'
21+
// Say "Hide"
22+
showText.style.display = 'none'
23+
hideText.style.display = 'inline'
24+
} else {
25+
// Hide images
26+
img.style.display = 'none'
27+
// Say "Show"
28+
showText.style.display = 'inline'
29+
hideText.style.display = 'none'
30+
}
31+
}
32+
33+
// Track image toggle events
34+
// sendEvent({ type: 'imageToggle' })
35+
})
36+
}

0 commit comments

Comments
 (0)