ycxyc
All checks were successful
Deploy / deploy (push) Successful in 1m8s

This commit is contained in:
2026-07-28 00:50:47 +02:00
parent d0fc8890cf
commit 4095d7edbd
3 changed files with 17 additions and 72 deletions

View File

@@ -826,41 +826,6 @@ document.addEventListener('DOMContentLoaded', () => {
updateAvatarOptionPreviews(form, getActiveAvatarField(form));
};
const renderAvatarSeedChoices = (form, seeds) => {
const picker = form.querySelector('[data-avatar-seed-picker]');
const grid = form.querySelector('[data-avatar-seed-picker-grid]');
if (!picker || !grid) return;
grid.innerHTML = '';
seeds.forEach((seed, index) => {
const params = buildAvatarParams(form, { avatar_preset: seed });
if (!params) return;
const card = document.createElement('button');
card.type = 'button';
card.className = 'avatar-seed-card';
card.setAttribute('data-avatar-seed-option', seed);
card.innerHTML = `
<span class="avatar-seed-card__thumb">
<img src="${avatarEndpoint}?${params.toString()}" alt="Grundvariante ${index + 1}">
</span>
<span class="avatar-seed-card__label">Variante ${index + 1}</span>
`;
card.addEventListener('click', () => {
const seedField = form.querySelector('[data-avatar-field="avatar_preset"]');
if (!(seedField instanceof HTMLInputElement)) return;
seedField.value = seed;
picker.hidden = true;
ensureAvatarBuilderLoaded(form);
updateAvatarPreview(form);
updateAvatarOptionPreviews(form, getActiveAvatarField(form));
});
grid.appendChild(card);
});
picker.hidden = false;
};
document.querySelectorAll('[data-avatar-builder]').forEach((form) => {
form.querySelectorAll('[data-avatar-field]').forEach((field) => {
field.addEventListener('change', () => {
@@ -925,23 +890,22 @@ document.addEventListener('DOMContentLoaded', () => {
return slugifySeed(`${prefix}-${suffix}-${tail}`);
};
form.querySelector('[data-avatar-reroll]')?.addEventListener('click', () => {
form.querySelector('[data-avatar-random]')?.addEventListener('click', () => {
const seedField = form.querySelector('[data-avatar-field="avatar_preset"]');
if (!(seedField instanceof HTMLInputElement)) return;
const currentSeed = readAvatarValue(form, 'avatar_preset');
const seeds = [];
while (seeds.length < 8) {
const candidate = buildSeed();
if (candidate === currentSeed || seeds.includes(candidate)) continue;
seeds.push(candidate);
}
seedField.value = buildSeed();
renderAvatarSeedChoices(form, seeds);
});
avatarComponentFields.forEach((field) => {
const options = Array.from(form.querySelectorAll(`[data-avatar-field="${field}"]`));
if (!options.length) return;
const randomOption = options[Math.floor(Math.random() * options.length)];
if (!(randomOption instanceof HTMLInputElement)) return;
randomOption.checked = true;
});
form.querySelector('[data-avatar-seed-picker-close]')?.addEventListener('click', () => {
const picker = form.querySelector('[data-avatar-seed-picker]');
if (picker) picker.hidden = true;
ensureAvatarBuilderLoaded(form);
updateAvatarPreview(form);
updateAvatarOptionPreviews(form, getActiveAvatarField(form));
});
});