fermeture ouverture categorie

This commit is contained in:
Flatlogic Bot 2026-02-16 18:51:39 +00:00
parent f9c70d9be2
commit f26d0b6abc
4 changed files with 56 additions and 2 deletions

View File

@ -190,6 +190,14 @@ body {
color: white;
}
.category-wrapper.collapsed .category-group {
display: none;
}
.category-wrapper.collapsed .category-collapse-toggle {
transform: rotate(-90deg);
}
.channel-category {
color: var(--text-muted);
font-size: 0.85em;

View File

@ -2609,6 +2609,7 @@ document.addEventListener('DOMContentLoaded', () => {
const currentSidebar = document.getElementById('sidebar-channels-list');
if (newSidebar && currentSidebar) {
currentSidebar.innerHTML = newSidebar.innerHTML;
if (window.restoreCollapsedStates) window.restoreCollapsedStates();
}
})
.catch(err => console.error('Error refreshing sidebar:', err));
@ -2622,5 +2623,38 @@ document.addEventListener('DOMContentLoaded', () => {
}
});
// Category Collapsible Logic
document.addEventListener('click', (e) => {
const categoryHeader = e.target.closest('.channel-category');
if (categoryHeader) {
// Check if we didn't click on a settings button or add button
if (e.target.closest('.channel-settings-btn') || e.target.closest('.add-channel-btn')) {
return;
}
const wrapper = categoryHeader.closest('.category-wrapper');
if (wrapper) {
wrapper.classList.toggle('collapsed');
// Persist state in localStorage
const categoryId = wrapper.dataset.id;
const collapsedStates = JSON.parse(localStorage.getItem('categoryCollapsedStates') || '{}');
collapsedStates[categoryId] = wrapper.classList.contains('collapsed');
localStorage.setItem('categoryCollapsedStates', JSON.stringify(collapsedStates));
}
}
});
// Restore collapsed states
window.restoreCollapsedStates = () => {
const collapsedStates = JSON.parse(localStorage.getItem('categoryCollapsedStates') || '{}');
Object.entries(collapsedStates).forEach(([id, isCollapsed]) => {
if (isCollapsed) {
const wrapper = document.querySelector(`.category-wrapper[data-id="${id}"]`);
if (wrapper) {
wrapper.classList.add('collapsed');
}
}
});
};
restoreCollapsedStates();
});

View File

@ -459,11 +459,14 @@ $projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
// Render category and its children
?>
<div class="category-wrapper" data-id="<?php echo $item['id']; ?>">
<div class="channel-category d-flex align-items-center mt-3" data-id="<?php echo $item['id']; ?>">
<div class="channel-category d-flex align-items-center mt-3" data-id="<?php echo $item['id']; ?>" style="cursor: pointer;">
<span class="category-collapse-toggle me-1" style="width: 12px; display: inline-block; transition: transform 0.2s; font-size: 0.7em;">
<i class="fa-solid fa-chevron-down"></i>
</span>
<?php if (!empty($item['icon'])): ?>
<span class="me-1" style="font-size: 14px;"><?php echo renderRoleIcon($item['icon'], '14px'); ?></span>
<?php endif; ?>
<span class="category-name flex-grow-1 text-uppercase fw-bold" style="font-size: 0.85em; cursor: pointer; color: var(--text-muted);"><?php echo htmlspecialchars($item['name']); ?></span>
<span class="category-name flex-grow-1 text-uppercase fw-bold" style="font-size: 0.85em; color: var(--text-muted);"><?php echo htmlspecialchars($item['name']); ?></span>
<?php if ($can_manage_channels): ?>
<span class="channel-settings-btn ms-1" style="cursor: pointer; color: var(--text-muted);"
data-bs-toggle="modal" data-bs-target="#editChannelModal"

View File

@ -271,3 +271,12 @@
2026-02-16 18:43:06 - GET /index.php?server_id=1&channel_id=17 - POST: []
2026-02-16 18:43:30 - GET /index.php?server_id=1&channel_id=12 - POST: []
2026-02-16 18:43:38 - GET /index.php?server_id=1&channel_id=19 - POST: []
2026-02-16 18:47:12 - GET / - POST: []
2026-02-16 18:47:41 - GET /?fl_project=38443 - POST: []
2026-02-16 18:48:13 - GET /index.php?server_id=1&channel_id=19 - POST: []
2026-02-16 18:48:31 - GET /index.php?server_id=1&channel_id=19 - POST: []
2026-02-16 18:48:34 - GET /index.php?server_id=1&channel_id=19 - POST: []
2026-02-16 18:48:39 - GET /index.php?server_id=1&channel_id=19 - POST: []
2026-02-16 18:50:31 - GET /?fl_project=38443 - POST: []
2026-02-16 18:50:41 - GET /index.php?server_id=1&channel_id=12 - POST: []
2026-02-16 18:51:08 - GET /index.php?server_id=1&channel_id=12 - POST: []