fermeture ouverture categorie
This commit is contained in:
parent
f9c70d9be2
commit
f26d0b6abc
@ -190,6 +190,14 @@ body {
|
|||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.category-wrapper.collapsed .category-group {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category-wrapper.collapsed .category-collapse-toggle {
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
|
||||||
.channel-category {
|
.channel-category {
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
|
|||||||
@ -2609,6 +2609,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
const currentSidebar = document.getElementById('sidebar-channels-list');
|
const currentSidebar = document.getElementById('sidebar-channels-list');
|
||||||
if (newSidebar && currentSidebar) {
|
if (newSidebar && currentSidebar) {
|
||||||
currentSidebar.innerHTML = newSidebar.innerHTML;
|
currentSidebar.innerHTML = newSidebar.innerHTML;
|
||||||
|
if (window.restoreCollapsedStates) window.restoreCollapsedStates();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(err => console.error('Error refreshing sidebar:', err));
|
.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
|
// Render category and its children
|
||||||
?>
|
?>
|
||||||
<div class="category-wrapper" data-id="<?php echo $item['id']; ?>">
|
<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'])): ?>
|
<?php if (!empty($item['icon'])): ?>
|
||||||
<span class="me-1" style="font-size: 14px;"><?php echo renderRoleIcon($item['icon'], '14px'); ?></span>
|
<span class="me-1" style="font-size: 14px;"><?php echo renderRoleIcon($item['icon'], '14px'); ?></span>
|
||||||
<?php endif; ?>
|
<?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): ?>
|
<?php if ($can_manage_channels): ?>
|
||||||
<span class="channel-settings-btn ms-1" style="cursor: pointer; color: var(--text-muted);"
|
<span class="channel-settings-btn ms-1" style="cursor: pointer; color: var(--text-muted);"
|
||||||
data-bs-toggle="modal" data-bs-target="#editChannelModal"
|
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: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: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: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