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: [ ignoreCustomFragments: [
/<(use|path)[^>]*>(?:(?!<\/(use|path)>)[\s\S])*?<\/(use|path)>/, /<(use|path)[^>]*>(?:(?!<\/(use|path)>)[\s\S])*?<\/(use|path)>/,
/<div[^>]*class="color-box"[^>]*>(?:(?!<\/div>)[\s\S])*?<\/div>/, /<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> <script>
const gallery = document.querySelector('.gallery'); const slider = document.querySelector('.slider');
const track = gallery.querySelector('.track'); const track = slider.querySelector('.track');
const images = Array.from(gallery.querySelectorAll('.track > *')); const items = Array.from(slider.querySelectorAll('.track > *'));
const nav = gallery.querySelector('.gallery-nav'); const nav = slider.querySelector('.slider-nav');
const prevButton = gallery.querySelector('button.prev'); const prevButton = slider.querySelector('button.prev');
const nextButton = gallery.querySelector('button.next'); const nextButton = slider.querySelector('button.next');
const TOLERANCE = 2; const TOLERANCE = 2;
@ -27,7 +27,7 @@
}; };
const updateActiveStates = () => { const updateActiveStates = () => {
images.forEach(updateAriaCurrent); items.forEach(updateAriaCurrent);
nav.querySelectorAll('.indicator-btn').forEach(updateAriaCurrent); nav.querySelectorAll('.indicator-btn').forEach(updateAriaCurrent);
prevButton.disabled = isAtStart(); prevButton.disabled = isAtStart();
nextButton.disabled = isAtEnd(); nextButton.disabled = isAtEnd();
@ -36,10 +36,10 @@
let currentIndex = 0; let currentIndex = 0;
const scrollToIndex = (index) => { const scrollToIndex = (index) => {
if (index < 0 || index >= images.length || index === currentIndex) return; if (index < 0 || index >= items.length || index === currentIndex) return;
currentIndex = index; currentIndex = index;
images[index].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' }); items[index].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });
updateActiveStates(); updateActiveStates();
}; };
@ -50,11 +50,11 @@
const resizeObserver = new ResizeObserver(() => debounce(scrollToIndex(currentIndex))); const resizeObserver = new ResizeObserver(() => debounce(scrollToIndex(currentIndex)));
resizeObserver.observe(track); resizeObserver.observe(track);
const galleryObserver = new IntersectionObserver( const sliderObserver = new IntersectionObserver(
(entries) => { (entries) => {
entries.forEach((entry) => { entries.forEach((entry) => {
if (entry.isIntersecting && entry.intersectionRatio >= 0.75) { if (entry.isIntersecting && entry.intersectionRatio >= 0.75) {
const index = images.indexOf(entry.target); const index = items.indexOf(entry.target);
if (index !== -1) { if (index !== -1) {
currentIndex = index; currentIndex = index;
updateActiveStates(); updateActiveStates();
@ -66,18 +66,18 @@
); );
const initializeGallery = () => { const initializeGallery = () => {
images.forEach((el, i) => { items.forEach((el, i) => {
const btn = document.createElement('button'); const btn = document.createElement('button');
if (i === 0) btn.setAttribute('aria-current', 'true'); if (i === 0) btn.setAttribute('aria-current', 'true');
btn.classList.add('indicator-btn'); btn.classList.add('indicator-btn');
btn.dataset.index = i; btn.dataset.index = i;
btn.innerText = i + 1; 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))); btn.addEventListener('click', () => scrollToIndex(Number(btn.dataset.index)));
if (i === 0) el.setAttribute('aria-current', 'true'); 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('tabindex', '0');
el.setAttribute('role', 'group'); el.setAttribute('role', 'group');
@ -87,18 +87,18 @@
updateActiveStates(); updateActiveStates();
}; };
images.forEach((el) => galleryObserver.observe(el)); items.forEach((el) => sliderObserver.observe(el));
prevButton.addEventListener('click', prev); prevButton.addEventListener('click', prev);
nextButton.addEventListener('click', next); nextButton.addEventListener('click', next);
track.addEventListener('scroll', debounce(updateActiveStates, 100)); track.addEventListener('scroll', debounce(updateActiveStates, 100));
document.addEventListener('DOMContentLoaded', initializeGallery); document.addEventListener('DOMContentLoaded', initializeGallery);
</script> </script>
<section aria-label="Image gallery" webc:root="override"> <section aria-label="Slider" webc:root="override">
<button class="prev" aria-label="Previous Image"> <button class="prev" aria-label="Previous item">
<icon icon="fa6-solid:chevron-left"></icon> <icon icon="fa6-solid:chevron-left"></icon>
</button> </button>
<button class="next" aria-label="Next Image"> <button class="next" aria-label="Next item">
<icon icon="fa6-solid:chevron-right"></icon> <icon icon="fa6-solid:chevron-right"></icon>
</button> </button>
@ -106,10 +106,10 @@
<slot></slot> <slot></slot>
</div> </div>
<nav class="gallery-nav" aria-label="Gallery"></nav> <nav class="slider-nav" aria-label="Slider"></nav>
</section> </section>
<style webc:scoped="gallery"> <style webc:scoped="slider">
:host { :host {
display: grid; display: grid;
grid-auto-columns: auto 1fr auto; grid-auto-columns: auto 1fr auto;
@ -236,7 +236,7 @@
padding-inline: 1em; padding-inline: 1em;
} }
:host .gallery-nav { :host .slider-nav {
--indicator-size: 2.5em; --indicator-size: 2.5em;
grid-row: progress; 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. An assortment of additional references how Sebin can be drawn.
<ref-gallery> <slider>
<ref-img webc:for="ref of [...Array(9).keys()]" <ref-img webc:for="ref of [...Array(9).keys()]"
:@src="`ref-muscle-${ref + 1}.png`" :@src="`ref-muscle-${ref + 1}.png`"
:@alt="$data.galleryMuscle[ref].alt" :@alt="$data.galleryMuscle[ref].alt"
@ -100,7 +100,7 @@ An assortment of additional references how Sebin can be drawn.
:@char="$data.firstName.toLowerCase()" :@char="$data.firstName.toLowerCase()"
:@dropshadow="false" :@dropshadow="false"
></ref-img> ></ref-img>
</ref-gallery> </slider>
<nsfw-barrier> <nsfw-barrier>
<div slot="message"> <div slot="message">

View file

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