Hej, jak zrobić żeby przy otwarciu "preview-box" można było strzałkami w lewo i w prawo przejść TYLKO po zdjęciach z danej kategorii (tych które zostają na ekranie po kliknięciu jednego z przycisków filtrujących zdjęcia)? Próbowałem dodawać i usuwać listenery, updatować "shownImages", zmieniać kolejność itd. ale nic nie działa, pewnie rozwiązanie jest oczywiste ale dzisiaj już nic nie wymyślę. Jeżli ktoś miałby ochotę rzucić na to okiem to byłbym bardzo wdzięczny.
https://codepen.io/u7th4e/pen/vYQEmVw
const items = document.querySelector(".items"),
images = document.querySelectorAll(".gallery .image");
let currentIndex = 0;
images.forEach(img => img.classList.add("shownImg"));
var shownImages = document.querySelectorAll(".shownImg");
window.addEventListener("DOMContentLoaded", () => {
items.addEventListener("click", (selectedItem) => {
if (selectedItem.target.classList.contains("item")) {
items.querySelector(".active").classList.remove("active");
selectedItem.target.classList.add("active");
let filterName = selectedItem.target.getAttribute("data-name");
images.forEach((image) => {
let filterImges = image.getAttribute("data-name");
if (filterImges == filterName || filterName == "all") {
image.classList.remove("hide");
image.classList.add("show", "shownImg");
} else {
image.classList.add("hide");
image.classList.remove("show", "shownImg");
}
});
}
});
shownImages.forEach((img, index) => {
img.addEventListener("click", () => {
currentIndex = index;
preview();
});
});
});
const previewBox = document.querySelector(".preview-box"),
previewImg = previewBox.querySelector("img"),
closeIcon = previewBox.querySelector(".icon"),
prev = document.querySelector(".btn-prev"),
next = document.querySelector(".btn-next");
prev.addEventListener("click", () => {
currentIndex != 0 ? currentIndex-- : undefined;
preview();
});
next.addEventListener("click", () => {
currentIndex != shownImages.length - 1 ? currentIndex++ : undefined;
preview();
});
function preview() {
previewImg.src = shownImages[currentIndex].querySelector("img").src;
previewBox.classList.add("show");
closeIcon.addEventListener("click", () => {
previewBox.classList.remove("show");
});
}