Skip to content

Commit b5ec86d

Browse files
Merge pull request #1121 from SG170/fix/accessibility-book-cover-alt-text
Accessibility improvements for book cover alt texts
2 parents 4aac019 + 49fb0aa commit b5ec86d

2 files changed

Lines changed: 8 additions & 7 deletions

File tree

‎frontend/js/app.js‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ class BookRenderer {
668668
scene.innerHTML = `
669669
<div class="book" data-id="${escapeHTML(id)}">
670670
<div class="book__face book__face--front">
671-
<img src="${safeThumb}" alt="${safeTitle}">
671+
<img src="${safeThumb}" alt="Cover of '${safeTitle}' by ${safeAuthors || 'Unknown Author'}">
672672
</div>
673673
<div class="book__face book__face--spine" style="background: ${randomSpine}"></div>
674674
<div class="book__face book__face--right"></div>
@@ -903,6 +903,7 @@ class BookRenderer {
903903
if (!modal) return;
904904

905905
document.getElementById('modal-img').src = book.volumeInfo.imageLinks?.thumbnail.replace('http:', 'https:') || '';
906+
document.getElementById('modal-img').alt = `Cover of '${book.volumeInfo.title}' by ${book.volumeInfo.authors?.join(', ') || 'Unknown Author'}`;
906907
document.getElementById('modal-title').textContent = book.volumeInfo.title;
907908
document.getElementById('modal-author').textContent = book.volumeInfo.authors?.join(", ") || "Unknown Author";
908909

@@ -3453,7 +3454,7 @@ document.addEventListener('DOMContentLoaded', async () => {
34533454
card.className = 'progress-overview-card';
34543455
card.innerHTML = `
34553456
<div class="progress-card-cover">
3456-
${cover ? `<img src="${cover.replace('http:', 'https:')}" alt="${title}" loading="lazy">` : '<i class="fa-solid fa-book"></i>'}
3457+
${cover ? `<img src="${cover.replace('http:', 'https:')}" alt="Cover of '${title}' by ${author}" loading="lazy">` : '<i class="fa-solid fa-book"></i>'}
34573458
</div>
34583459
<div class="progress-card-info">
34593460
<div class="progress-card-title">${title}</div>
@@ -4166,7 +4167,7 @@ async function triggerOfflineLibraryView() {
41664167
bookCard.className = 'book-card offline-card';
41674168
bookCard.innerHTML = `
41684169
<div class="book-cover-wrapper">
4169-
<img src="${book.coverUrl || '../assets/images/default-cover.png'}" alt="${book.title}" class="book-cover-img" />
4170+
<img src="${book.coverUrl || '../assets/images/default-cover.png'}" alt="Cover of '${book.title}' by ${book.author || 'Unknown Author'}" class="book-cover-img" />
41704171
</div>
41714172
<div class="book-details">
41724173
<h3>${book.title}</h3>

‎frontend/js/library-3d.js‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,7 +1206,7 @@ class BookshelfRenderer3D {
12061206
if (book.cover) {
12071207
const img = document.createElement('img');
12081208
img.src = book.cover;
1209-
img.alt = book.title;
1209+
img.alt = `Cover of '${book.title}' by ${book.author}`;
12101210
img.style.cssText = `
12111211
position: absolute;
12121212
top: 0;
@@ -2056,7 +2056,7 @@ class BookshelfRenderer3D {
20562056

20572057
// Update tooltip content
20582058
document.getElementById('tooltip-cover').src = book.cover;
2059-
document.getElementById('tooltip-cover').setAttribute('alt', `Cover of ${book.title} `);
2059+
document.getElementById('tooltip-cover').setAttribute('alt', `Cover of '${book.title}' by ${book.author}`);
20602060
document.getElementById('tooltip-title').textContent = book.title;
20612061
document.getElementById('tooltip-author').textContent = `by ${book.author} `;
20622062
document.getElementById('tooltip-stars').textContent = this.getStarRating(book.rating);
@@ -2161,7 +2161,7 @@ class BookshelfRenderer3D {
21612161

21622162
container.innerHTML = related.map(b => `
21632163
<div class="related-book-item" data-id="${b.id}" title="${b.title} by ${b.author}">
2164-
<img src="${b.cover || (b.volumeInfo && b.volumeInfo.imageLinks && b.volumeInfo.imageLinks.thumbnail) || '../assets/images/biblioDrift_favicon.png'}" alt="${b.title}">
2164+
<img src="${b.cover || (b.volumeInfo && b.volumeInfo.imageLinks && b.volumeInfo.imageLinks.thumbnail) || '../assets/images/biblioDrift_favicon.png'}" alt="Cover of '${b.title}' by ${b.author || 'Unknown Author'}">
21652165
<div class="related-book-title">${b.title}</div>
21662166
</div>
21672167
`).join('');
@@ -2203,7 +2203,7 @@ class BookshelfRenderer3D {
22032203
const coverImg = document.getElementById('modal-cover');
22042204
if (coverImg) {
22052205
coverImg.src = book.cover;
2206-
coverImg.setAttribute('alt', `Cover of ${book.title} by ${book.author} `);
2206+
coverImg.setAttribute('alt', `Cover of '${book.title}' by ${book.author}`);
22072207
}
22082208

22092209
// 3. Style the 3D Book (Spine & Back)

0 commit comments

Comments
 (0)