revue des boutons (partie 1)
This commit is contained in:
parent
6bf89f26bb
commit
4eb4844dab
@ -31,6 +31,7 @@ $users = Auth::getAllUsers(false);
|
|||||||
<link rel="icon" type="image/png" href="../assets/images/site/favicon.png">
|
<link rel="icon" type="image/png" href="../assets/images/site/favicon.png">
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<link rel="stylesheet" href="../assets/css/main.css">
|
<link rel="stylesheet" href="../assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css">
|
||||||
<style>
|
<style>
|
||||||
.version-banner {
|
.version-banner {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@ -58,18 +59,31 @@ $users = Auth::getAllUsers(false);
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<span>Administration</span>
|
<span>Administration</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- Le bouton hamburger sera inséré par JS -->
|
|
||||||
<div class="nav-menu">
|
<div class="nav-menu">
|
||||||
<a href="../index.php" target="_blank" class="button">Visiter le site</a>
|
<a href="../index.php" target="_blank" class="button tooltip" data-tooltip="Visiter le site">
|
||||||
<a href="profile.php" class="button">Profil</a>
|
<i class="fa-solid fa-house"></i>
|
||||||
|
</a>
|
||||||
|
<a href="profile.php" class="button tooltip" data-tooltip="Profil">
|
||||||
|
<i class="fas fa-user"></i>
|
||||||
|
</a>
|
||||||
<?php if (Auth::isAdmin() || Auth::hasAdminRole()): ?>
|
<?php if (Auth::isAdmin() || Auth::hasAdminRole()): ?>
|
||||||
<a href="users.php" class="button">Utilisateurs</a>
|
<a href="users.php" class="button tooltip" data-tooltip="Utilisateurs">
|
||||||
|
<i class="fas fa-users"></i>
|
||||||
|
</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<a href="story-edit.php" class="button">Nouveau roman</a>
|
<a href="story-edit.php" class="button tooltip" data-tooltip="Nouveau roman">
|
||||||
<a href="options.php" class="button">Options</a>
|
<i class="fa-solid fa-book"></i>
|
||||||
<a href="export-import.php" class="button">Import/Export</a>
|
</a>
|
||||||
|
<a href="options.php" class="button tooltip" data-tooltip="Options">
|
||||||
|
<i class="fas fa-cog"></i>
|
||||||
|
</a>
|
||||||
|
<a href="export-import.php" class="button tooltip" data-tooltip="Import/Export">
|
||||||
|
<i class="fa-solid fa-upload"></i>
|
||||||
|
</a>
|
||||||
<form method="POST" action="logout.php" class="logout-form">
|
<form method="POST" action="logout.php" class="logout-form">
|
||||||
<button type="submit">Déconnexion</button>
|
<button type="submit" class="tooltip" data-tooltip="Déconnexion">
|
||||||
|
<i class="fas fa-sign-out-alt"></i>
|
||||||
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@ -92,11 +106,17 @@ $users = Auth::getAllUsers(false);
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="story-actions">
|
<div class="story-actions">
|
||||||
<a href="story-edit.php?id=<?= htmlspecialchars($story['id']) ?>" class="button">Modifier</a>
|
<a href="story-edit.php?id=<?= htmlspecialchars($story['id']) ?>" class="button tooltip" data-tooltip="Modifier">
|
||||||
|
<i class="fas fa-edit"></i>
|
||||||
|
</a>
|
||||||
<?php if (Auth::isAdmin() || Auth::hasAdminRole()): ?>
|
<?php if (Auth::isAdmin() || Auth::hasAdminRole()): ?>
|
||||||
<button type="button" class="button manage-access" data-id="<?= htmlspecialchars($story['id']) ?>">Accès</button>
|
<button type="button" class="button tooltip manage-access" data-tooltip="Accès" data-id="<?= htmlspecialchars($story['id']) ?>">
|
||||||
|
<i class="fas fa-users-cog"></i>
|
||||||
|
</button>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<button type="button" class="button delete-story" data-id="<?= htmlspecialchars($story['id']) ?>">Supprimer</button>
|
<button type="button" class="button tooltip delete-story" data-tooltip="Supprimer" data-id="<?= htmlspecialchars($story['id']) ?>">
|
||||||
|
<i class="fas fa-trash-alt"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
220
assets/css/buttons.css
Normal file
220
assets/css/buttons.css
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
/* buttons.css - Styles pour les boutons, tooltips et menu */
|
||||||
|
|
||||||
|
/* Styles pour les boutons avec icônes */
|
||||||
|
.button.tooltip,
|
||||||
|
.tooltip {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: var(--radius-sm);
|
||||||
|
transition: var(--transition-fast);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button.tooltip i,
|
||||||
|
.tooltip i {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style pour le bouton de déconnexion */
|
||||||
|
.logout-form button {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: var(--radius-sm);
|
||||||
|
padding: 0;
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
background-color: var(--bg-tertiary);
|
||||||
|
color: var(--text-primary);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logout-form button:hover {
|
||||||
|
background-color: var(--error-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logout-form button i {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tooltip styles */
|
||||||
|
.tooltip::after {
|
||||||
|
content: attr(data-tooltip);
|
||||||
|
position: absolute;
|
||||||
|
bottom: -35px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
background-color: var(--bg-primary);
|
||||||
|
color: var(--text-primary);
|
||||||
|
padding: 5px 10px;
|
||||||
|
border-radius: var(--radius-sm);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
white-space: nowrap;
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
transition: opacity 0.3s, visibility 0.3s;
|
||||||
|
z-index: 100;
|
||||||
|
pointer-events: none;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip:hover::after {
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Styles pour le texte à côté des icônes (mobile) */
|
||||||
|
.tooltip-text {
|
||||||
|
display: none;
|
||||||
|
margin-left: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Menu toggle button */
|
||||||
|
.menu-toggle {
|
||||||
|
display: none;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
color: var(--text-primary);
|
||||||
|
font-size: 1.5rem;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: var(--spacing-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Styles pour la barre de navigation */
|
||||||
|
.admin-nav {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--spacing-md);
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Styles pour les boutons d'action des romans */
|
||||||
|
.story-actions {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--spacing-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style spécifique pour le bouton d'édition */
|
||||||
|
.story-actions a.button {
|
||||||
|
background-color: var(--accent-primary);
|
||||||
|
color: var(--text-tertiary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.story-actions a.button:hover {
|
||||||
|
background-color: var(--accent-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style spécifique pour le bouton d'accès */
|
||||||
|
.story-actions .manage-access {
|
||||||
|
background-color: var(--bg-secondary);
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.story-actions .manage-access:hover {
|
||||||
|
background-color: var(--accent-primary);
|
||||||
|
color: var(--text-tertiary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style spécifique pour le bouton de suppression */
|
||||||
|
.story-actions .delete-story {
|
||||||
|
background-color: var(--bg-secondary);
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.story-actions .delete-story:hover {
|
||||||
|
background-color: var(--error-color);
|
||||||
|
color: var(--text-tertiary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Media queries pour le menu mobile */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.menu-toggle {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
right: var(--spacing-md);
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
z-index: 101;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu {
|
||||||
|
flex-direction: column;
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
right: 0;
|
||||||
|
background-color: var(--bg-secondary);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
border-radius: var(--radius-sm);
|
||||||
|
padding: var(--spacing-md);
|
||||||
|
z-index: 100;
|
||||||
|
width: 200px;
|
||||||
|
gap: var(--spacing-sm);
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
||||||
|
|
||||||
|
/* État caché par défaut */
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
transition: all var(--transition-fast);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu.active {
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style des boutons en mode mobile */
|
||||||
|
.nav-menu.active .button,
|
||||||
|
.nav-menu.active .logout-form button {
|
||||||
|
width: 100%;
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: var(--spacing-sm) var(--spacing-md);
|
||||||
|
gap: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Afficher le texte des tooltips en mode mobile */
|
||||||
|
.nav-menu.active .tooltip-text {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Cacher les tooltips standards sur mobile */
|
||||||
|
.tooltip::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logout-form {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Afficher le texte des tooltips en mode mobile pour les actions des romans */
|
||||||
|
.story-actions.active .tooltip-text {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: var(--spacing-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.story-actions.active .button {
|
||||||
|
width: auto;
|
||||||
|
padding: var(--spacing-xs) var(--spacing-sm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pour les très petits écrans */
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.story-actions {
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.story-actions .button {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
@ -5,9 +5,10 @@
|
|||||||
border-radius: var(--radius-md);
|
border-radius: var(--radius-md);
|
||||||
border: 1px solid var(--border-color);
|
border: 1px solid var(--border-color);
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: flex-start;
|
||||||
gap: var(--spacing-lg);
|
gap: var(--spacing-lg);
|
||||||
transition: transform var(--transition-fast), box-shadow var(--transition-fast);
|
transition: transform var(--transition-fast), box-shadow var(--transition-fast);
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.story-item:hover {
|
.story-item:hover {
|
||||||
@ -16,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.story-cover {
|
.story-cover {
|
||||||
width: 200px;
|
width: 180px;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
border-radius: var(--radius-sm);
|
border-radius: var(--radius-sm);
|
||||||
@ -35,6 +36,10 @@
|
|||||||
|
|
||||||
.story-info {
|
.story-info {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 120px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.story-info p {
|
.story-info p {
|
||||||
|
@ -4,3 +4,4 @@
|
|||||||
@import 'components.css';
|
@import 'components.css';
|
||||||
@import 'forms.css';
|
@import 'forms.css';
|
||||||
@import 'editor.css';
|
@import 'editor.css';
|
||||||
|
@import 'buttons.css';
|
@ -135,7 +135,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
|
|
||||||
// Gestion du menu mobile
|
// Gestion du menu mobile
|
||||||
const navMenu = document.querySelector('.nav-menu');
|
const navMenu = document.querySelector('.nav-menu');
|
||||||
const navBrand = document.querySelector('.nav-brand');
|
|
||||||
|
|
||||||
// Créer le bouton hamburger s'il n'existe pas déjà
|
// Créer le bouton hamburger s'il n'existe pas déjà
|
||||||
if (!document.querySelector('.menu-toggle')) {
|
if (!document.querySelector('.menu-toggle')) {
|
||||||
@ -147,6 +146,15 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
// Insérer le bouton avant le menu
|
// Insérer le bouton avant le menu
|
||||||
navMenu.parentNode.insertBefore(menuToggle, navMenu);
|
navMenu.parentNode.insertBefore(menuToggle, navMenu);
|
||||||
|
|
||||||
|
// Ajouter le texte des tooltips à côté des icônes pour mobile
|
||||||
|
document.querySelectorAll('.nav-menu .tooltip').forEach(button => {
|
||||||
|
const tooltip = button.getAttribute('data-tooltip');
|
||||||
|
const tooltipSpan = document.createElement('span');
|
||||||
|
tooltipSpan.className = 'tooltip-text';
|
||||||
|
tooltipSpan.textContent = tooltip;
|
||||||
|
button.appendChild(tooltipSpan);
|
||||||
|
});
|
||||||
|
|
||||||
// Gérer les clics sur le bouton
|
// Gérer les clics sur le bouton
|
||||||
menuToggle.addEventListener('click', function() {
|
menuToggle.addEventListener('click', function() {
|
||||||
navMenu.classList.toggle('active');
|
navMenu.classList.toggle('active');
|
||||||
@ -160,6 +168,42 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ajouter le texte des tooltips à côté des icônes pour mobile - pour tous les tooltips
|
||||||
|
function addTooltipText() {
|
||||||
|
document.querySelectorAll('.tooltip').forEach(button => {
|
||||||
|
// Vérifier si le tooltip-text n'existe pas déjà
|
||||||
|
if (!button.querySelector('.tooltip-text')) {
|
||||||
|
const tooltip = button.getAttribute('data-tooltip');
|
||||||
|
const tooltipSpan = document.createElement('span');
|
||||||
|
tooltipSpan.className = 'tooltip-text';
|
||||||
|
tooltipSpan.textContent = tooltip;
|
||||||
|
button.appendChild(tooltipSpan);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Appliquer à tous les tooltips du site
|
||||||
|
addTooltipText();
|
||||||
|
|
||||||
|
// Détection de la taille d'écran pour activer le mode mobile
|
||||||
|
function checkMobileMode() {
|
||||||
|
const isMobile = window.innerWidth <= 768;
|
||||||
|
|
||||||
|
// Gestion des actions pour les romans
|
||||||
|
const storyActions = document.querySelectorAll('.story-actions');
|
||||||
|
storyActions.forEach(action => {
|
||||||
|
if (isMobile) {
|
||||||
|
action.classList.add('active');
|
||||||
|
} else {
|
||||||
|
action.classList.remove('active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérifier au chargement et au redimensionnement
|
||||||
|
checkMobileMode();
|
||||||
|
window.addEventListener('resize', checkMobileMode);
|
||||||
|
|
||||||
// Gestion de la suppression des romans
|
// Gestion de la suppression des romans
|
||||||
const storyList = document.querySelector('.stories-list');
|
const storyList = document.querySelector('.stories-list');
|
||||||
if (storyList) {
|
if (storyList) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user