refactor: ♻️ update naming of variables, classes and attributes

This commit is contained in:
Sebin Nyshkim 2025-06-28 18:39:46 +02:00
parent b85675eb45
commit f5d526d79b
4 changed files with 26 additions and 26 deletions

View file

@ -62,7 +62,7 @@ export default async function (eleventyConfig) {
ignoreCustomFragments: [
/<(use|path)[^>]*>(?:(?!<\/(use|path)>)[\s\S])*?<\/(use|path)>/,
/<div[^>]*class="color-box"[^>]*>(?:(?!<\/div>)[\s\S])*?<\/div>/,
/<nav[^>]*class="gallery-nav"[^>]*>.*?<\/nav>/
/<nav[^>]*class="slider-nav"[^>]*>.*?<\/nav>/
]
});
}

View file

@ -1,10 +1,10 @@
<script>
const gallery = document.querySelector('.gallery');
const track = gallery.querySelector('.track');
const images = Array.from(gallery.querySelectorAll('.track > *'));
const nav = gallery.querySelector('.gallery-nav');
const prevButton = gallery.querySelector('button.prev');
const nextButton = gallery.querySelector('button.next');
const slider = document.querySelector('.slider');
const track = slider.querySelector('.track');
const items = Array.from(slider.querySelectorAll('.track > *'));
const nav = slider.querySelector('.slider-nav');
const prevButton = slider.querySelector('button.prev');
const nextButton = slider.querySelector('button.next');
const TOLERANCE = 2;
@ -27,7 +27,7 @@
};
const updateActiveStates = () => {
images.forEach(updateAriaCurrent);
items.forEach(updateAriaCurrent);
nav.querySelectorAll('.indicator-btn').forEach(updateAriaCurrent);
prevButton.disabled = isAtStart();
nextButton.disabled = isAtEnd();
@ -36,10 +36,10 @@
let currentIndex = 0;
const scrollToIndex = (index) => {
if (index < 0 || index >= images.length || index === currentIndex) return;
if (index < 0 || index >= items.length || index === currentIndex) return;
currentIndex = index;
images[index].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });
items[index].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });
updateActiveStates();
};
@ -50,11 +50,11 @@
const resizeObserver = new ResizeObserver(() => debounce(scrollToIndex(currentIndex)));
resizeObserver.observe(track);
const galleryObserver = new IntersectionObserver(
const sliderObserver = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting && entry.intersectionRatio >= 0.75) {
const index = images.indexOf(entry.target);
const index = items.indexOf(entry.target);
if (index !== -1) {
currentIndex = index;
updateActiveStates();
@ -66,18 +66,18 @@
);
const initializeGallery = () => {
images.forEach((el, i) => {
items.forEach((el, i) => {
const btn = document.createElement('button');
if (i === 0) btn.setAttribute('aria-current', 'true');
btn.classList.add('indicator-btn');
btn.dataset.index = i;
btn.innerText = i + 1;
btn.setAttribute('aria-label', `Go to image ${i + 1} of ${images.length}`);
btn.setAttribute('aria-label', `Go to item ${i + 1} of ${items.length}`);
btn.addEventListener('click', () => scrollToIndex(Number(btn.dataset.index)));
if (i === 0) el.setAttribute('aria-current', 'true');
el.setAttribute('aria-label', `Image ${i + 1} of ${images.length}`);
el.setAttribute('aria-label', `Item ${i + 1} of ${items.length}`);
el.setAttribute('tabindex', '0');
el.setAttribute('role', 'group');
@ -87,18 +87,18 @@
updateActiveStates();
};
images.forEach((el) => galleryObserver.observe(el));
items.forEach((el) => sliderObserver.observe(el));
prevButton.addEventListener('click', prev);
nextButton.addEventListener('click', next);
track.addEventListener('scroll', debounce(updateActiveStates, 100));
document.addEventListener('DOMContentLoaded', initializeGallery);
</script>
<section aria-label="Image gallery" webc:root="override">
<button class="prev" aria-label="Previous Image">
<section aria-label="Slider" webc:root="override">
<button class="prev" aria-label="Previous item">
<icon icon="fa6-solid:chevron-left"></icon>
</button>
<button class="next" aria-label="Next Image">
<button class="next" aria-label="Next item">
<icon icon="fa6-solid:chevron-right"></icon>
</button>
@ -106,10 +106,10 @@
<slot></slot>
</div>
<nav class="gallery-nav" aria-label="Gallery"></nav>
<nav class="slider-nav" aria-label="Slider"></nav>
</section>
<style webc:scoped="gallery">
<style webc:scoped="slider">
:host {
display: grid;
grid-auto-columns: auto 1fr auto;
@ -236,7 +236,7 @@
padding-inline: 1em;
}
:host .gallery-nav {
:host .slider-nav {
--indicator-size: 2.5em;
grid-row: progress;

View file

@ -90,7 +90,7 @@ Sebin is very concerned with an even distribution of muscle mass, but pays parti
An assortment of additional references how Sebin can be drawn.
<ref-gallery>
<slider>
<ref-img webc:for="ref of [...Array(9).keys()]"
:@src="`ref-muscle-${ref + 1}.png`"
:@alt="$data.galleryMuscle[ref].alt"
@ -100,7 +100,7 @@ An assortment of additional references how Sebin can be drawn.
:@char="$data.firstName.toLowerCase()"
:@dropshadow="false"
></ref-img>
</ref-gallery>
</slider>
<nsfw-barrier>
<div slot="message">

View file

@ -6,7 +6,7 @@ eleventyNavigation:
Sebin knows how to dress!
<ref-gallery>
<slider>
<ref-img webc:for="ref of Array(4).keys()"
:@src="`ref-clothes-${ref + 1}.png`"
:@alt="$data.galleryClothing[ref].alt"
@ -16,4 +16,4 @@ Sebin knows how to dress!
:@artist="$data.galleryClothing[ref].artist"
:@dropshadow="false"
></ref-img>
</ref-gallery>
</slider>