feat: compact concil page

This commit is contained in:
2025-08-18 07:51:13 +02:00
parent 3fd49d1351
commit 87ff0d22c8
2 changed files with 305 additions and 108 deletions

View File

@@ -360,12 +360,39 @@ class FilterManager {
const trimesterSelector = this.parent.elements.trimesterSelector;
if (!trimesterSelector) return;
trimesterSelector.addEventListener('change', (e) => {
const newTrimester = parseInt(e.target.value);
if (newTrimester !== this.parent.state.currentTrimester) {
this.changeTrimester(newTrimester);
}
});
// Support pour les nouveaux boutons tabs
if (trimesterSelector.hasAttribute('data-trimester-selector')) {
// Navigation tabs - écouter les clics sur les boutons
const trimesterTabs = trimesterSelector.querySelectorAll('[data-trimester-tab]');
trimesterTabs.forEach(tab => {
tab.addEventListener('click', (e) => {
e.preventDefault();
const newTrimester = parseInt(tab.dataset.trimesterTab);
if (newTrimester !== this.parent.state.currentTrimester) {
this.changeTrimester(newTrimester);
}
});
// Support clavier pour accessibilité
tab.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
const newTrimester = parseInt(tab.dataset.trimesterTab);
if (newTrimester !== this.parent.state.currentTrimester) {
this.changeTrimester(newTrimester);
}
}
});
});
} else {
// Ancien sélecteur dropdown - pour compatibilité
trimesterSelector.addEventListener('change', (e) => {
const newTrimester = parseInt(e.target.value);
if (newTrimester !== this.parent.state.currentTrimester) {
this.changeTrimester(newTrimester);
}
});
}
}
async changeTrimester(newTrimester) {
@@ -382,7 +409,24 @@ class FilterManager {
this.parent.showToast('Erreur lors du changement de trimestre', 'error');
// Revert selector to previous value
this.parent.elements.trimesterSelector.value = this.parent.state.currentTrimester;
const trimesterSelector = this.parent.elements.trimesterSelector;
if (trimesterSelector.hasAttribute('data-trimester-selector')) {
// Pour les tabs - remettre les bonnes classes active
const tabs = trimesterSelector.querySelectorAll('[data-trimester-tab]');
tabs.forEach(tab => {
const tabTrimester = parseInt(tab.dataset.trimesterTab);
if (tabTrimester === this.parent.state.currentTrimester) {
tab.classList.add('active');
tab.setAttribute('aria-selected', 'true');
} else {
tab.classList.remove('active');
tab.setAttribute('aria-selected', 'false');
}
});
} else {
// Pour l'ancien dropdown
trimesterSelector.value = this.parent.state.currentTrimester;
}
} finally {
// Hide loading overlay
this.parent.elements.loadingOverlay?.classList.add('hidden');