Activate create-list submit on input

This commit is contained in:
2026-06-15 11:15:46 +02:00
parent 29afac7be4
commit 3bbf797840
+40 -5
View File
@@ -143,6 +143,11 @@
</li> </li>
</ul> </ul>
<div class="sg-delete-confirmation-pattern__actions">
<button class="sg-interaction-element sg-button sg-button--active" type="button" data-create-list-form-toggle aria-expanded="false">Neue Liste anlegen</button>
<button class="sg-interaction-element sg-button sg-button--active" type="button" data-overlay-dialog-close>Abbrechen</button>
</div>
<div class="sg-form-sections-card-wrapper sg-delete-confirmation-pattern__create-list-form" data-create-list-form hidden aria-label="Formular mit Abschnitten"> <div class="sg-form-sections-card-wrapper sg-delete-confirmation-pattern__create-list-form" data-create-list-form hidden aria-label="Formular mit Abschnitten">
<form class="sg-form-sections-card" action="#" method="post" aria-label="Neue Liste anlegen Formular"> <form class="sg-form-sections-card" action="#" method="post" aria-label="Neue Liste anlegen Formular">
<div class="sg-form-sections-card__body" data-pattern-part="form-body"> <div class="sg-form-sections-card__body" data-pattern-part="form-body">
@@ -181,11 +186,6 @@
</footer> </footer>
</form> </form>
</div> </div>
<div class="sg-delete-confirmation-pattern__actions">
<button class="sg-interaction-element sg-button sg-button--active" type="button" data-create-list-form-toggle aria-expanded="false">Neue Liste anlegen</button>
<button class="sg-interaction-element sg-button sg-button--active" type="button" data-overlay-dialog-close>Abbrechen</button>
</div>
</div> </div>
</article> </article>
</div> </div>
@@ -199,6 +199,9 @@
const overlayListButtons = Array.from(stage.querySelectorAll('[data-overlay-list-toggle]')); const overlayListButtons = Array.from(stage.querySelectorAll('[data-overlay-list-toggle]'));
const createListForm = stage.querySelector('[data-create-list-form]'); const createListForm = stage.querySelector('[data-create-list-form]');
const createListFormToggle = stage.querySelector('[data-create-list-form-toggle]'); const createListFormToggle = stage.querySelector('[data-create-list-form-toggle]');
const createListNameInput = stage.querySelector('[data-create-list-form] input[aria-label="Name"]');
const createListDescriptionInput = stage.querySelector('[data-create-list-form] textarea[aria-label="Beschreibung"]');
const createListSubmitButton = stage.querySelector('[data-create-list-form] button[type="submit"]');
const selectedListIds = new Set( const selectedListIds = new Set(
(stage.dataset.overlaySelectedLists ?? '') (stage.dataset.overlaySelectedLists ?? '')
.split(',') .split(',')
@@ -210,6 +213,16 @@
stage.querySelectorAll('[data-overlay-dialog]').forEach((dialog) => { stage.querySelectorAll('[data-overlay-dialog]').forEach((dialog) => {
dialog.hidden = true; dialog.hidden = true;
}); });
if (createListForm) {
createListForm.hidden = true;
}
if (createListFormToggle) {
createListFormToggle.disabled = false;
createListFormToggle.setAttribute('aria-disabled', 'false');
createListFormToggle.setAttribute('aria-expanded', 'false');
createListFormToggle.classList.remove('sg-button--inactive');
createListFormToggle.classList.add('sg-button--active');
}
stage.dataset.dialogOpen = 'false'; stage.dataset.dialogOpen = 'false';
}; };
@@ -261,11 +274,33 @@
} }
if (createListForm && createListFormToggle) { if (createListForm && createListFormToggle) {
const updateCreateListButtonState = () => {
if (!createListSubmitButton) {
return;
}
const hasName = Boolean(createListNameInput?.value.trim());
const hasDescription = Boolean(createListDescriptionInput?.value.trim());
const isActive = hasName || hasDescription;
createListSubmitButton.disabled = !isActive;
createListSubmitButton.setAttribute('aria-disabled', String(!isActive));
createListSubmitButton.classList.toggle('sg-button--process-inactive', !isActive);
};
createListNameInput?.addEventListener('input', updateCreateListButtonState);
createListDescriptionInput?.addEventListener('input', updateCreateListButtonState);
updateCreateListButtonState();
createListFormToggle.addEventListener('click', (event) => { createListFormToggle.addEventListener('click', (event) => {
event.preventDefault(); event.preventDefault();
createListForm.hidden = false; createListForm.hidden = false;
createListFormToggle.setAttribute('aria-expanded', 'true'); createListFormToggle.setAttribute('aria-expanded', 'true');
createListFormToggle.classList.remove('sg-button--active');
createListFormToggle.classList.add('sg-button--inactive');
createListFormToggle.disabled = true; createListFormToggle.disabled = true;
createListFormToggle.setAttribute('aria-disabled', 'true');
updateCreateListButtonState();
}); });
} }