}
.carousel-content-inner {
- --opacity: 0.2;
+ --opacity: 0.1;
--mask-image: linear-gradient(
to right,
transparent,
- rgba(0, 0, 0, var(--opacity)) calc(var(--mask-size) - 5%),
+ rgba(0, 0, 0, var(--opacity)) calc(var(--mask-size) - 2%),
black calc(var(--mask-size) + 5%),
black calc(100% - var(--mask-size) - 5%),
- rgba(0, 0, 0, var(--opacity)) calc(100% - var(--mask-size) + 5%),
+ rgba(0, 0, 0, var(--opacity)) calc(100% - var(--mask-size) + 2%),
transparent
);
mask-image: var(--mask-image);
const itemsContainerSelector = ".carousel";
const itemSelector = ".carousel-item";
- const { debounce } = window.XenSiteUtils;
+ const { debounce, waitForElements } = window.XenSiteUtils;
const carousel = async (element) => {
const itemsContainer = element.querySelector(itemsContainerSelector);
- const items = element.querySelectorAll(itemSelector);
+ const items = await waitForElements(element, itemSelector);
const firstItem = items[0].cloneNode(true);
firstItem.innerHTML = "";
behavior: "smooth",
});
});
- };
-
- [...document.querySelectorAll(selector)].forEach((elm) => {
- carousel(elm);
- });
- function updateCarouselTabIndexes() {
- const items = document.querySelectorAll(".carousel-item");
+ function updateCarouselTabIndexes() {
+ const items = element.querySelectorAll(".carousel-item");
- items.forEach((item) => {
- const rect = item.getBoundingClientRect();
- const isVisible = rect.left >= 0 && rect.right <= window.innerWidth;
+ items.forEach((item) => {
+ const rect = item.getBoundingClientRect();
+ const isVisible = rect.left >= 0 && rect.right <= window.innerWidth;
- item.classList.toggle("carousel-item--hidden", !isVisible);
- const links = item.querySelectorAll("a");
+ item.classList.toggle("carousel-item--hidden", !isVisible);
+ const links = item.querySelectorAll("a");
- links.forEach((link) => {
- if (link.getAttribute("aria-hidden") !== "true") {
- if (isVisible) {
- link.removeAttribute("tabindex");
- } else {
- link.setAttribute("tabindex", "-1");
+ links.forEach((link) => {
+ if (link.getAttribute("aria-hidden") !== "true") {
+ if (isVisible) {
+ link.removeAttribute("tabindex");
+ } else {
+ link.setAttribute("tabindex", "-1");
+ }
}
- }
+ });
});
- });
- }
+ }
- document.querySelector(".carousel").addEventListener("scroll", updateCarouselTabIndexes);
- updateCarouselTabIndexes();
+ element.querySelector(".carousel").addEventListener("scroll", updateCarouselTabIndexes);
+ updateCarouselTabIndexes();
+ };
+
+ [...document.querySelectorAll(selector)].forEach((elm) => {
+ carousel(elm);
+ });
})();