Compare commits

..

4 Commits

Author SHA1 Message Date
Jürgen Mummert 78c44d8de6 fix: default event list to grid on first load 2026-03-02 17:28:21 +01:00
Jürgen Mummert d0916e7b39 Use class-only grid activation in event filter 2026-03-01 21:57:31 +01:00
Jürgen Mummert a55df0be90 Force default grid layout in event filter initialization 2026-03-01 21:51:35 +01:00
Jürgen Mummert fc0d1fa1cc Render event checkboxes as switch-first fullwidth rows 2026-03-01 14:46:58 +01:00
2 changed files with 90 additions and 7 deletions
+42 -6
View File
@@ -27,7 +27,13 @@
{{ form_row(form.title) }} {{ form_row(form.title) }}
{{ form_row(form.startDate) }} {{ form_row(form.startDate) }}
{{ form_row(form.endDate) }} {{ form_row(form.endDate) }}
{{ form_row(form.addTime) }} <div class="widget fullwidth">
<div class="ns-tag-switch-item">
{{ form_widget(form.addTime, { attr: { class: (form.addTime.vars.attr.class|default('') ~ ' ns-tag-switch-input')|trim, role: 'switch' } }) }}
{{ form_label(form.addTime) }}
</div>
{{ form_errors(form.addTime) }}
</div>
<div id="event-time-wrap" hidden aria-hidden="true"> <div id="event-time-wrap" hidden aria-hidden="true">
{{ form_row(form.startTime) }} {{ form_row(form.startTime) }}
{{ form_row(form.endTime) }} {{ form_row(form.endTime) }}
@@ -150,7 +156,13 @@
</div> </div>
{{ form_row(form.url) }} {{ form_row(form.url) }}
{{ form_row(form.addImage) }} <div class="widget fullwidth">
<div class="ns-tag-switch-item">
{{ form_widget(form.addImage, { attr: { class: (form.addImage.vars.attr.class|default('') ~ ' ns-tag-switch-input')|trim, role: 'switch' } }) }}
{{ form_label(form.addImage) }}
</div>
{{ form_errors(form.addImage) }}
</div>
<div id="event-image-upload-wrap" hidden aria-hidden="true"> <div id="event-image-upload-wrap" hidden aria-hidden="true">
{{ form_row(form.eventUpload) }} {{ form_row(form.eventUpload) }}
@@ -158,10 +170,34 @@
<p class="help-text">Die Angabe des Urhebers ist notwendig. Ihnen muss eine Genehmigung zur Verwendung des Bildes vorliegen.</p> <p class="help-text">Die Angabe des Urhebers ist notwendig. Ihnen muss eine Genehmigung zur Verwendung des Bildes vorliegen.</p>
</div> </div>
{{ form_row(form.termsAccepted) }} <div class="widget fullwidth">
{{ form_row(form.isSoldOut) }} <div class="ns-tag-switch-item">
{{ form_row(form.isCanceled) }} {{ form_widget(form.termsAccepted, { attr: { class: (form.termsAccepted.vars.attr.class|default('') ~ ' ns-tag-switch-input')|trim, role: 'switch' } }) }}
{{ form_row(form.published) }} {{ form_label(form.termsAccepted) }}
</div>
{{ form_errors(form.termsAccepted) }}
</div>
<div class="widget fullwidth">
<div class="ns-tag-switch-item">
{{ form_widget(form.isSoldOut, { attr: { class: (form.isSoldOut.vars.attr.class|default('') ~ ' ns-tag-switch-input')|trim, role: 'switch' } }) }}
{{ form_label(form.isSoldOut) }}
</div>
{{ form_errors(form.isSoldOut) }}
</div>
<div class="widget fullwidth">
<div class="ns-tag-switch-item">
{{ form_widget(form.isCanceled, { attr: { class: (form.isCanceled.vars.attr.class|default('') ~ ' ns-tag-switch-input')|trim, role: 'switch' } }) }}
{{ form_label(form.isCanceled) }}
</div>
{{ form_errors(form.isCanceled) }}
</div>
<div class="widget fullwidth">
<div class="ns-tag-switch-item">
{{ form_widget(form.published, { attr: { class: (form.published.vars.attr.class|default('') ~ ' ns-tag-switch-input')|trim, role: 'switch' } }) }}
{{ form_label(form.published) }}
</div>
{{ form_errors(form.published) }}
</div>
<div class="actions" aria-label="Formularaktionen"> <div class="actions" aria-label="Formularaktionen">
<button type="submit" id="save-btn" disabled>Speichern</button> <button type="submit" id="save-btn" disabled>Speichern</button>
<button type="submit" id="save-back-btn" name="save_back" value="1" disabled>Speichern und Zurück</button> <button type="submit" id="save-back-btn" name="save_back" value="1" disabled>Speichern und Zurück</button>
@@ -46,12 +46,59 @@
const targetEventListId = filters.dataset.eventlistId || 'eventlist'; const targetEventListId = filters.dataset.eventlistId || 'eventlist';
const list = document.getElementById(targetEventListId); const list = document.getElementById(targetEventListId);
const initialStoredEventListView = (() => {
try {
return (window.localStorage.getItem('eventlist_view') || '').trim();
} catch (error) {
return '';
}
})();
const applyDefaultGrid = (targetList) => {
if (!targetList) {
return;
}
targetList.classList.add('event-filter-target-list');
targetList.classList.add('grid');
};
if (!list) { if (!list) {
console.warn(`[event_filter] Target event list #${targetEventListId} was not found.`); console.warn(`[event_filter] Target event list #${targetEventListId} was not found.`);
window.addEventListener('DOMContentLoaded', () => {
applyDefaultGrid(document.getElementById(targetEventListId));
}, { once: true });
} }
list?.classList.add('event-filter-target-list'); applyDefaultGrid(list);
window.addEventListener('DOMContentLoaded', () => {
window.setTimeout(() => {
if ('' !== initialStoredEventListView) {
return;
}
const targetList = document.getElementById(targetEventListId);
if (!targetList) {
return;
}
targetList.classList.remove('list');
applyDefaultGrid(targetList);
const toggleToList = document.getElementById('toggletolist');
const toggleToGrid = document.getElementById('toggletogrid');
toggleToList?.classList.remove('disabled');
toggleToGrid?.classList.add('disabled');
try {
window.localStorage.setItem('eventlist_view', 'grid');
} catch (error) {
}
}, 0);
}, { once: true });
const events = list ? Array.from(list.querySelectorAll(':scope > .event')) : []; const events = list ? Array.from(list.querySelectorAll(':scope > .event')) : [];
const tagSelect = filters.querySelector('#tag-filter'); const tagSelect = filters.querySelector('#tag-filter');