fix: Add Bootstrap JS for collapse to work
- Added bootstrap.bundle.min.js to layout.twig - Added debug logging to accordion JS - Fixed icon update logic
This commit is contained in:
parent
98f6244eb3
commit
68cb135322
|
|
@ -209,7 +209,9 @@
|
||||||
if (c.startsWith(COOKIE_NAME + '=')) {
|
if (c.startsWith(COOKIE_NAME + '=')) {
|
||||||
try {
|
try {
|
||||||
return JSON.parse(decodeURIComponent(c.substring(COOKIE_NAME.length + 1)));
|
return JSON.parse(decodeURIComponent(c.substring(COOKIE_NAME.length + 1)));
|
||||||
} catch(e) {}
|
} catch(e) {
|
||||||
|
console.log('Cookie parse error:', e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
|
|
@ -221,7 +223,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateIcon(header, isOpen) {
|
function updateIcon(header, isOpen) {
|
||||||
const icon = header.querySelector('.accordion-icon');
|
const icon = header ? header.querySelector('.accordion-icon') : null;
|
||||||
if (icon) {
|
if (icon) {
|
||||||
icon.className = isOpen ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
|
icon.className = isOpen ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
|
||||||
}
|
}
|
||||||
|
|
@ -229,11 +231,15 @@
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const state = getAccordionState();
|
const state = getAccordionState();
|
||||||
|
console.log('Initial state from cookies:', state);
|
||||||
|
|
||||||
// Инициализация иконок из cookies
|
// Инициализация иконок из cookies
|
||||||
document.querySelectorAll('.accordion-header').forEach(header => {
|
document.querySelectorAll('.accordion-header').forEach(header => {
|
||||||
const groupId = header.dataset.group;
|
const groupId = header.dataset.groupSlug;
|
||||||
|
const target = header.dataset.bsTarget;
|
||||||
const isOpen = state[groupId] === 'open';
|
const isOpen = state[groupId] === 'open';
|
||||||
|
console.log('Group:', groupId, 'isOpen:', isOpen);
|
||||||
|
|
||||||
updateIcon(header, isOpen);
|
updateIcon(header, isOpen);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -243,16 +249,18 @@
|
||||||
const groupId = this.dataset.groupSlug;
|
const groupId = this.dataset.groupSlug;
|
||||||
state[groupId] = 'closed';
|
state[groupId] = 'closed';
|
||||||
saveAccordionState(state);
|
saveAccordionState(state);
|
||||||
|
console.log('Hidden:', groupId, 'state:', state);
|
||||||
const header = document.querySelector('.accordion-header[data-bs-target="#' + this.id + '"]');
|
const header = document.querySelector('.accordion-header[data-bs-target="#' + this.id + '"]');
|
||||||
if (header) updateIcon(header, false);
|
updateIcon(header, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
el.addEventListener('shown.bs.collapse', function() {
|
el.addEventListener('shown.bs.collapse', function() {
|
||||||
const groupId = this.dataset.groupSlug;
|
const groupId = this.dataset.groupSlug;
|
||||||
state[groupId] = 'open';
|
state[groupId] = 'open';
|
||||||
saveAccordionState(state);
|
saveAccordionState(state);
|
||||||
|
console.log('Shown:', groupId, 'state:', state);
|
||||||
const header = document.querySelector('.accordion-header[data-bs-target="#' + this.id + '"]');
|
const header = document.querySelector('.accordion-header[data-bs-target="#' + this.id + '"]');
|
||||||
if (header) updateIcon(header, true);
|
updateIcon(header, true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,5 +126,7 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
<!-- Bootstrap 5 JS -->
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Loading…
Reference in New Issue