const mainSection = document.getElementById('main-section');
const formSection = document.getElementById('form-section');
const addBookMarkBtn = document.getElementById('add-bookmark-button');
const categoryName = document.querySelectorAll('.category-name');
const categoryDropdown = document.getElementById('category-dropdown');
const closeFormBtn = document.getElementById('close-form-button');
const addBookmarkBtnForm = document.getElementById('add-bookmark-button-form');
const nameInput = document.getElementById('name');
const urlInput = document.getElementById('url');
const bookMarkListSection = document.getElementById('bookmark-list-section');
const viewCategoryBtn = document.getElementById('view-category-button');
const categoryList = document.getElementById('category-list');
const closeListBtn = document.getElementById('close-list-button');
const deleteBookmarkBtn = document.getElementById('delete-bookmark-button');
const getBookmarks = () => {
try {
const data = localStorage.getItem('bookmarks');
if (!data) return [];
const parsed = JSON.parse(data);
const isValidArray = Array.isArray(parsed) && parsed.every(
item =>
item &&
typeof item === 'object' &&
'name' in item &&
'url' in item &&
'category' in item
);
return isValidArray ? parsed : [];
} catch {
return [];
}
};
const displayOrCloseForm = () => {
mainSection.classList.toggle('hidden');
formSection.classList.toggle('hidden');
}
addBookMarkBtn.addEventListener('click', () => {
categoryName.forEach(header => {
header.innerText = categoryDropdown.value;
})
displayOrCloseForm();
})
closeFormBtn.addEventListener('click', displayOrCloseForm);
function createBookmark() {
return {
name: nameInput.value,
category: categoryDropdown.value,
url: urlInput.value,
}
}
function reset() {
nameInput.value = '';
urlInput.value = '';
displayOrCloseForm();
}
addBookmarkBtnForm.addEventListener('click', () => {
const storage = getBookmarks();
const bookmarksInput = createBookmark();
storage.push(bookmarksInput);
localStorage.setItem('bookmarks', JSON.stringify(storage));
reset();
})
const displayOrHideCategory = () => {
mainSection.classList.toggle('hidden');
bookMarkListSection.classList.toggle('hidden');
}
viewCategoryBtn.addEventListener('click', () => {
const storage = getBookmarks();
const listOfCategory = storage.filter(b => b.category === categoryDropdown.value);
categoryName.forEach(header => {
header.innerText = categoryDropdown.value;
})
if (storage.length === 0) {
categoryList.innerHTML = `<p>No Bookmarks Found</p>`;
}
categoryList.innerHTML = '';
for (let i = 0; i < listOfCategory.length; i++) {
const bookmark = listOfCategory[i];
if (categoryDropdown.value === bookmark.category) {
categoryList.innerHTML += `
<div class="container">
<input type="radio" id="${bookmark.name}" value="${bookmark.name}" name="list-of-category"/>
<label for="${bookmark.name}">
<a href="${bookmark.url}" target="_blank">${bookmark.name}</a>
</label>
</div>
`;
}
}
if (listOfCategory.length === 0) {
categoryList.innerHTML = `<p>No Bookmarks Found</p>`;
}
displayOrHideCategory();
})
closeListBtn.addEventListener('click', displayOrHideCategory);
deleteBookmarkBtn.addEventListener('click', () => {
const deleteInput = document.querySelector(`input[name="list-of-category"]:checked`);
if (!deleteInput) return alert("Please select a bookmark to delete.");
const storage = getBookmarks();
const bookmarkName = deleteInput.value;
const index = storage.findIndex(b => b.name === bookmarkName);
if (index !== -1) {
const deletedBookmark = storage.splice(index, 1)[0];
localStorage.setItem('bookmarks', JSON.stringify(storage));
deleteInput.parentElement.remove();
const remainingInCategory = storage.some(b => b.category === deletedBookmark.category);
if (!remainingInCategory) {
categoryList.innerHTML = `<p>No Bookmarks Found</p>`;
}
return;
}
});
I’m not able to pass Test 23 this is about the delete button.