fermeture ouverture categorie
This commit is contained in:
parent
f9c70d9be2
commit
f26d0b6abc
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
});
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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: []
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user