diff --git a/src/main/resources/static/js/downloader.js b/src/main/resources/static/js/downloader.js index 3b325b597..7bdcd83d5 100644 --- a/src/main/resources/static/js/downloader.js +++ b/src/main/resources/static/js/downloader.js @@ -132,7 +132,9 @@ } } catch (error) { clearTimeout(timeoutId); - showGameBtn.style.display = 'none'; + if(showGameBtn){ + showGameBtn.style.display = 'none'; + } submitButton.textContent = originalButtonText; submitButton.disabled = false; handleDownloadError(error); diff --git a/src/main/resources/static/js/fileInput.js b/src/main/resources/static/js/fileInput.js index a67ff1fd6..b24563c03 100644 --- a/src/main/resources/static/js/fileInput.js +++ b/src/main/resources/static/js/fileInput.js @@ -170,7 +170,7 @@ function setupFileInput(chooser) { inputContainer.querySelector('#fileInputText').innerHTML = window.fileInput.loading; async function checkZipFile() { - const hasZipFiles = allFiles.some(file => zipTypes.includes(file.type)); + const hasZipFiles = allFiles.some(file => file.type && zipTypes.includes(file.type)); // Only change to extractPDF message if we actually have zip files if (hasZipFiles) { diff --git a/src/main/resources/static/js/homecard-legacy.js b/src/main/resources/static/js/homecard-legacy.js index 02789efd6..a43453f1c 100644 --- a/src/main/resources/static/js/homecard-legacy.js +++ b/src/main/resources/static/js/homecard-legacy.js @@ -255,5 +255,12 @@ document.addEventListener('DOMContentLoaded', function () { }); }, 500); + Array.from(document.querySelectorAll('.feature-group-header')).forEach((header) => { + const parent = header.parentNode; + header.onclick = () => { + expandCollapseToggle(parent); + }; + }); + showFavoritesOnly(); }); diff --git a/src/main/resources/static/js/homecard.js b/src/main/resources/static/js/homecard.js index 33d49a783..8f5a92f01 100644 --- a/src/main/resources/static/js/homecard.js +++ b/src/main/resources/static/js/homecard.js @@ -241,10 +241,5 @@ document.addEventListener('DOMContentLoaded', async function () { console.error('Material Symbols Rounded font failed to load.'); }); - Array.from(document.querySelectorAll('.feature-group-header')).forEach((header) => { - const parent = header.parentNode; - header.onclick = () => { - expandCollapseToggle(parent); - }; - }); + }); diff --git a/src/main/resources/static/js/languageSelection.js b/src/main/resources/static/js/languageSelection.js index 2c7e04063..7d4b8bc0c 100644 --- a/src/main/resources/static/js/languageSelection.js +++ b/src/main/resources/static/js/languageSelection.js @@ -57,11 +57,15 @@ function initLanguageSettings() { function sortLanguageDropdown() { document.addEventListener('DOMContentLoaded', function () { - const dropdownMenu = document.querySelector('.dropdown-menu .dropdown-item.lang_dropdown-item').parentElement; + const dropdownMenu = document.getElementById('languageSelection'); if (dropdownMenu) { - const items = Array.from(dropdownMenu.children).filter((child) => child.matches('a')); + const items = Array.from(dropdownMenu.children).filter((child) => child.querySelector('a')); items - .sort((a, b) => a.dataset.bsLanguageCode.localeCompare(b.dataset.bsLanguageCode)) + .sort((wrapperA, wrapperB) => { + const a = wrapperA.querySelector('a'); + const b = wrapperB.querySelector('a'); + return a.dataset.bsLanguageCode.localeCompare(b.dataset.bsLanguageCode); + }) .forEach((node) => dropdownMenu.appendChild(node)); } }); diff --git a/src/main/resources/static/js/multitool/commands/delete-page.js b/src/main/resources/static/js/multitool/commands/delete-page.js index 89fbe8a24..751b115e2 100644 --- a/src/main/resources/static/js/multitool/commands/delete-page.js +++ b/src/main/resources/static/js/multitool/commands/delete-page.js @@ -21,12 +21,10 @@ export class DeletePageCommand extends Command { this.pagesContainer.removeChild(this.element); if (this.pagesContainer.childElementCount === 0) { const filenameInput = document.getElementById("filename-input"); - const filenameParagraph = document.getElementById("filename"); const downloadBtn = document.getElementById("export-button"); filenameInput.disabled = true; filenameInput.value = ""; - filenameParagraph.innerText = ""; downloadBtn.disabled = true; } @@ -43,13 +41,10 @@ export class DeletePageCommand extends Command { } const filenameInput = document.getElementById("filename-input"); - const filenameParagraph = document.getElementById("filename"); const downloadBtn = document.getElementById("export-button"); filenameInput.disabled = false; filenameInput.value = this.filenameInputValue; - if (this.filenameParagraph) - filenameParagraph.innerText = this.filenameParagraphText; downloadBtn.disabled = false; } @@ -63,12 +58,10 @@ export class DeletePageCommand extends Command { this.pagesContainer.removeChild(this.element); if (this.pagesContainer.childElementCount === 0) { const filenameInput = document.getElementById("filename-input"); - const filenameParagraph = document.getElementById("filename"); const downloadBtn = document.getElementById("export-button"); filenameInput.disabled = true; filenameInput.value = ""; - filenameParagraph.innerText = ""; downloadBtn.disabled = true; } diff --git a/src/main/resources/static/js/pages/home.js b/src/main/resources/static/js/pages/home.js index 8565c44a2..7872374eb 100644 --- a/src/main/resources/static/js/pages/home.js +++ b/src/main/resources/static/js/pages/home.js @@ -112,10 +112,10 @@ function setAsDefault(value) { function adjustVisibleElements() { const container = document.querySelector('.recent-features'); + if(!container) return; const subElements = Array.from(container.children); let totalWidth = 0; - const containerWidth = container.offsetWidth; subElements.forEach((element) => { totalWidth += 12 * parseFloat(getComputedStyle(document.documentElement).fontSize); diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html index b338f3f7d..593d8c213 100644 --- a/src/main/resources/templates/fragments/navbar.html +++ b/src/main/resources/templates/fragments/navbar.html @@ -143,7 +143,7 @@