Fix constraint kind dropdown not updating on level change

This commit is contained in:
Ian Gulliver
2026-02-15 22:09:16 -08:00
parent 7160e75004
commit f111173f92

View File

@@ -432,18 +432,18 @@ async function loadStudents() {
levelSelect.value = 'student'; levelSelect.value = 'student';
const kindSelect = document.createElement('wa-select'); const kindSelect = document.createElement('wa-select');
kindSelect.size = 'small'; kindSelect.size = 'small';
const updateKinds = () => { const updateKinds = (level) => {
kindSelect.querySelectorAll('wa-option').forEach(o => o.remove()); kindSelect.querySelectorAll('wa-option').forEach(o => o.remove());
for (const kind of levelKinds[levelSelect.value]) { for (const kind of levelKinds[level]) {
const opt = document.createElement('wa-option'); const opt = document.createElement('wa-option');
opt.value = kind; opt.value = kind;
opt.textContent = kindLabels[kind]; opt.textContent = kindLabels[kind];
kindSelect.appendChild(opt); kindSelect.appendChild(opt);
} }
kindSelect.value = levelKinds[levelSelect.value][0]; requestAnimationFrame(() => { kindSelect.value = levelKinds[level][0]; });
}; };
updateKinds(); updateKinds('student');
levelSelect.addEventListener('wa-change', updateKinds); levelSelect.addEventListener('wa-change', (e) => updateKinds(e.target.value));
const studentSelect = document.createElement('wa-select'); const studentSelect = document.createElement('wa-select');
studentSelect.size = 'small'; studentSelect.size = 'small';
studentSelect.placeholder = 'Student\u2026'; studentSelect.placeholder = 'Student\u2026';
@@ -472,7 +472,9 @@ async function loadStudents() {
const card = document.querySelector('[data-student-id="' + student.id + '"]'); const card = document.querySelector('[data-student-id="' + student.id + '"]');
if (card) { if (card) {
const selects = card.querySelectorAll('.constraint-add wa-select'); const selects = card.querySelectorAll('.constraint-add wa-select');
if (selects[0]) selects[0].value = savedLevel; if (selects[0]) {
requestAnimationFrame(() => { selects[0].value = savedLevel; });
}
if (selects[1]) { if (selects[1]) {
const kinds = levelKinds[savedLevel]; const kinds = levelKinds[savedLevel];
selects[1].querySelectorAll('wa-option').forEach(o => o.remove()); selects[1].querySelectorAll('wa-option').forEach(o => o.remove());
@@ -482,7 +484,7 @@ async function loadStudents() {
opt.textContent = kindLabels[kind]; opt.textContent = kindLabels[kind];
selects[1].appendChild(opt); selects[1].appendChild(opt);
} }
selects[1].value = savedKind; requestAnimationFrame(() => { selects[1].value = savedKind; });
} }
} }
}); });