Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

74 lines
2.6 KiB
JavaScript
Raw Normal View History

2023-06-02 20:15:10 +01:00
function updateFavoritesDropdown() {
var dropdown = document.querySelector("#favoritesDropdown");
2024-02-11 11:47:00 -05:00
if (!dropdown) {
console.error('Dropdown element with ID "favoritesDropdown" not found!');
2024-10-14 22:34:41 +01:00
return;
}
2024-10-14 22:34:41 +01:00
dropdown.innerHTML = "";
2023-06-02 20:15:10 +01:00
var hasFavorites = false;
2024-10-14 22:34:41 +01:00
var addedFeatures = new Set();
2023-06-02 20:15:10 +01:00
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
2024-10-14 22:34:41 +01:00
var value = localStorage.getItem(key);
if (value === "favorite") {
var navbarEntry = document.querySelector(`a[href='${key}']`);
if (navbarEntry) {
2024-10-14 22:34:41 +01:00
var featureName = navbarEntry.textContent.trim();
if (!addedFeatures.has(featureName)) {
var dropdownItem = document.createElement("div");
dropdownItem.className = "dropdown-item d-flex justify-content-between align-items-center";
// Create a wrapper for the original content
var contentWrapper = document.createElement("div");
contentWrapper.className = "d-flex align-items-center flex-grow-1";
contentWrapper.style.textDecoration = "none";
contentWrapper.style.color = "inherit";
// Clone the original content
var originalContent = navbarEntry.querySelector('div').cloneNode(true);
contentWrapper.appendChild(originalContent);
// Create the remove button
var removeButton = document.createElement("button");
removeButton.className = "btn btn-sm btn-link p-0 ml-2";
removeButton.innerHTML = '<i class="material-symbols-rounded close-icon" style="font-size: 18px;">close</i>';
removeButton.onclick = function(itemKey, event) {
event.preventDefault();
event.stopPropagation();
localStorage.removeItem(itemKey);
updateFavoritesSection();
updateFavoritesDropdown();
filterCards();
}.bind(null, key);
// Add click event to the content wrapper
contentWrapper.onclick = function(itemHref, event) {
event.preventDefault();
window.location.href = itemHref;
}.bind(null, navbarEntry.href);
dropdownItem.appendChild(contentWrapper);
dropdownItem.appendChild(removeButton);
dropdown.appendChild(dropdownItem);
hasFavorites = true;
addedFeatures.add(featureName);
}
} else {
console.warn(`Navbar entry not found for key: ${key}`);
}
2023-08-22 23:03:21 +01:00
}
}
2023-06-02 20:15:10 +01:00
if (!hasFavorites) {
var defaultItem = document.createElement("a");
defaultItem.className = "dropdown-item";
2024-10-14 22:34:41 +01:00
defaultItem.textContent = noFavourites || "No favorites added";
dropdown.appendChild(defaultItem);
}
2023-06-02 20:15:10 +01:00
}