This commit is contained in:
@@ -788,17 +788,34 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
image.src = url;
|
||||
};
|
||||
|
||||
const updateAvatarOptionPreviews = (form) => {
|
||||
form.querySelectorAll('[data-avatar-option-thumb]').forEach((image) => {
|
||||
const getActiveAvatarField = (form) => {
|
||||
const activeTab = form.querySelector('[data-avatar-component-tab].is-active');
|
||||
return activeTab?.getAttribute('data-avatar-component-tab') || 'avatar_lorelei_eyes_variant';
|
||||
};
|
||||
|
||||
const updateAvatarOptionPreviews = (form, activeField = null) => {
|
||||
const selector = activeField
|
||||
? `[data-avatar-component-panel="${activeField}"] [data-avatar-option-thumb]`
|
||||
: '[data-avatar-option-thumb]';
|
||||
|
||||
form.querySelectorAll(selector).forEach((image) => {
|
||||
const field = image.getAttribute('data-avatar-option-field') || '';
|
||||
const value = image.getAttribute('data-avatar-option-value') || '';
|
||||
const params = buildAvatarParams(form, { [field]: value });
|
||||
if (!params) return;
|
||||
|
||||
image.dataset.avatarLoaded = 'true';
|
||||
image.src = `${avatarEndpoint}?${params.toString()}`;
|
||||
});
|
||||
};
|
||||
|
||||
const ensureAvatarBuilderLoaded = (form) => {
|
||||
if (form.dataset.avatarInitialized === 'true') return;
|
||||
form.dataset.avatarInitialized = 'true';
|
||||
updateAvatarPreview(form);
|
||||
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]');
|
||||
@@ -824,8 +841,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
if (!(seedField instanceof HTMLInputElement)) return;
|
||||
seedField.value = seed;
|
||||
picker.hidden = true;
|
||||
ensureAvatarBuilderLoaded(form);
|
||||
updateAvatarPreview(form);
|
||||
updateAvatarOptionPreviews(form);
|
||||
updateAvatarOptionPreviews(form, getActiveAvatarField(form));
|
||||
});
|
||||
grid.appendChild(card);
|
||||
});
|
||||
@@ -834,16 +852,16 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
};
|
||||
|
||||
document.querySelectorAll('[data-avatar-builder]').forEach((form) => {
|
||||
updateAvatarPreview(form);
|
||||
updateAvatarOptionPreviews(form);
|
||||
form.querySelectorAll('[data-avatar-field]').forEach((field) => {
|
||||
field.addEventListener('change', () => {
|
||||
ensureAvatarBuilderLoaded(form);
|
||||
updateAvatarPreview(form);
|
||||
updateAvatarOptionPreviews(form);
|
||||
updateAvatarOptionPreviews(form, getActiveAvatarField(form));
|
||||
});
|
||||
field.addEventListener('input', () => {
|
||||
ensureAvatarBuilderLoaded(form);
|
||||
updateAvatarPreview(form);
|
||||
updateAvatarOptionPreviews(form);
|
||||
updateAvatarOptionPreviews(form, getActiveAvatarField(form));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -856,6 +874,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
form.querySelectorAll('[data-avatar-component-panel]').forEach((panel) => {
|
||||
panel.classList.toggle('is-active', panel.getAttribute('data-avatar-component-panel') === field);
|
||||
});
|
||||
updateAvatarOptionPreviews(form, field);
|
||||
};
|
||||
|
||||
form.querySelectorAll('[data-avatar-component-tab]').forEach((button) => {
|
||||
@@ -913,6 +932,13 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener('pkt:modal-open', (event) => {
|
||||
if (event.detail?.id !== 'modalAvatar') return;
|
||||
const form = document.querySelector('#modalAvatar [data-avatar-builder]');
|
||||
if (!form) return;
|
||||
ensureAvatarBuilderLoaded(form);
|
||||
});
|
||||
|
||||
document.querySelectorAll('[data-nav-events]').forEach(link => {
|
||||
link.addEventListener('click', async () => {
|
||||
if (window.location.pathname === '/' && window.location.hash === '#events') {
|
||||
|
||||
Reference in New Issue
Block a user