feat: add bank question via modal + dirty modal guard

- Add question in question bank now opens a modal instead of navigating
  to a full-page form, consistent with the edit modal pattern
- Modal closes are blocked by static backdrop once the user has made any
  change (input, checkbox, drag-reorder, sort, randomize, remove answer)
- Dirty state resets when the modal is fully hidden
This commit is contained in:
2026-07-06 22:32:44 +02:00
parent 394b8c7d33
commit 4a87ac574d
4 changed files with 52 additions and 2 deletions
@@ -45,6 +45,7 @@ export default class extends Controller {
removeItem(event) {
event.target.closest('[data-collection-item]').remove();
this._notifyChange();
}
sortAlphabetically() {
@@ -56,6 +57,7 @@ export default class extends Controller {
});
items.forEach(item => this.collectionTarget.appendChild(item));
this._syncOrdering();
this._notifyChange();
}
randomize() {
@@ -66,6 +68,11 @@ export default class extends Controller {
}
items.forEach(item => this.collectionTarget.appendChild(item));
this._syncOrdering();
this._notifyChange();
}
_notifyChange() {
this.element.dispatchEvent(new Event('change', {bubbles: true}));
}
// — drag-and-drop —
@@ -115,6 +122,7 @@ export default class extends Controller {
const isBottom = e.clientY > rect.top + rect.height / 2;
this.collectionTarget.insertBefore(this._dragging, isBottom ? el.nextSibling : el);
this._syncOrdering();
this._notifyChange();
});
}