frtg
This commit is contained in:
parent
edf9ecc8ef
commit
31aa30b801
|
|
@ -1483,3 +1483,95 @@ select[class*="selectpicker"],
|
|||
display: flex !important;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* Styles sidebar toggle + ligne sélectionnée */
|
||||
/* ── Ligne DataTable sélectionnée ── */
|
||||
.table tbody tr.row-selected > td {
|
||||
background: rgba(26, 107, 74, 0.08) !important;
|
||||
border-left: 3px solid var(--color-accent, #0abf7c);
|
||||
}
|
||||
|
||||
/* ── Transitions fluides (doivent être déclarées ici, APRÈS le CSS du template,
|
||||
pour ne pas être écrasées par Bootstrap/css/style.css) ── */
|
||||
/*
|
||||
#sidebar {
|
||||
transition: width 0.3s cubic-bezier(.4,0,.2,1),
|
||||
transform 0.3s cubic-bezier(.4,0,.2,1) !important;
|
||||
overflow: hidden !important;
|
||||
will-change: width;
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
#main {
|
||||
transition: margin-left 0.3s cubic-bezier(.4,0,.2,1) !important;
|
||||
will-change: margin-left;
|
||||
}
|
||||
*/
|
||||
|
||||
/* ── Mode réduit (icônes seules) — desktop ── */
|
||||
body.toggle-sidebar #sidebar {
|
||||
width: 68px !important;
|
||||
min-width: 68px !important;
|
||||
}
|
||||
|
||||
body.toggle-sidebar #main {
|
||||
margin-left: 68px !important;
|
||||
}
|
||||
/* Masquer textes et chevrons */
|
||||
body.toggle-sidebar #sidebar .nav-link span,
|
||||
body.toggle-sidebar #sidebar .nav-link .bi-chevron-down,
|
||||
body.toggle-sidebar #sidebar .sidebar-section-label {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
display: inline-block; /* garder dans le flux mais invisible — évite le reflow brutal */
|
||||
transition: opacity 0.2s ease, width 0.2s ease;
|
||||
}
|
||||
body:not(.toggle-sidebar) #sidebar .nav-link span,
|
||||
body:not(.toggle-sidebar) #sidebar .nav-link .bi-chevron-down {
|
||||
opacity: 1;
|
||||
width: auto;
|
||||
transition: opacity 0.25s ease 0.05s, width 0.25s ease;
|
||||
}
|
||||
/* Centrer les icônes et agrandir légèrement */
|
||||
body.toggle-sidebar #sidebar .nav-link {
|
||||
justify-content: center !important;
|
||||
padding: 11px 0 !important;
|
||||
}
|
||||
body.toggle-sidebar #sidebar .nav-link i:first-child {
|
||||
font-size: 1.25rem !important;
|
||||
width: auto !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
/* Fermer les sous-menus */
|
||||
body.toggle-sidebar #sidebar .nav-content {
|
||||
display: none !important;
|
||||
}
|
||||
/* Tooltip natif au survol en mode réduit */
|
||||
body.toggle-sidebar #sidebar .nav-link {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* ── Mobile : slide depuis la gauche ── */
|
||||
@media (max-width: 1199px) {
|
||||
#sidebar {
|
||||
transform: translateX(-100%);
|
||||
width: var(--sidebar-width, 240px) !important;
|
||||
}
|
||||
#sidebar.sidebar-mobile-open {
|
||||
transform: translateX(0);
|
||||
}
|
||||
/* Overlay semi-transparent derrière le sidebar mobile */
|
||||
#sidebar.sidebar-mobile-open::after {
|
||||
content: '';
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: rgba(0,0,0,0.35);
|
||||
z-index: -1;
|
||||
}
|
||||
#main {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,320 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<base href="<?= $racineWeb ?>" >
|
||||
|
||||
<link rel="icon" href="Bootstrap/images/favicon.png"/>
|
||||
|
||||
<link href="Bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<link href="Bootstrap/css/ajaxmask.css" rel="stylesheet">
|
||||
|
||||
<link href="Bootstrap/css/simple-sidebar.css" rel="stylesheet">
|
||||
<link href="Bootstrap/css/jquery-ui.css" rel="stylesheet">
|
||||
|
||||
<link href="Bootstrap/css/style.css?ver=2021.07.23.06" rel="stylesheet">
|
||||
|
||||
<link href="Bootstrap/css/datatables.min.css" rel="stylesheet">
|
||||
|
||||
<link href="Bootstrap/css/select2.min.css" rel="stylesheet">
|
||||
|
||||
<link href="Bootstrap/css/bootstrap-select.min.css" rel="stylesheet">
|
||||
|
||||
<!-- <title><?= $titre ?></title> -->
|
||||
<title><?= $_SESSION['vue'] ?></title>
|
||||
|
||||
<script type="text/javascript">
|
||||
if (document.addEventListener) {
|
||||
document.addEventListener('contextmenu', function (e) {
|
||||
e.preventDefault();
|
||||
}, false);
|
||||
} else {
|
||||
document.attachEvent('oncontextmenu', function () {
|
||||
window.event.returnValue = false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body style="width: 98%" >
|
||||
|
||||
<!--
|
||||
actesHarmonises : <?= $_SESSION['actesHarmonises'] ?>
|
||||
<br>
|
||||
controlerPlafondAdherent : <?= $_SESSION['controlerPlafondAdherent'] ?>
|
||||
<br>
|
||||
controlerPlafondBeneficiaire : <?= $_SESSION['controlerPlafondBeneficiaire'] ?>
|
||||
-->
|
||||
|
||||
<input class="sr-only" type="text" id="racineWeb" name="racineWeb" value="<?= $racineWeb ?>">
|
||||
|
||||
<!-- <div class="navbar navbar-inverse navbar-fixed-top" style="font-size:9pt; background-color: red;"> -->
|
||||
<div class="navbar navbar-inverse navbar-fixed-top" style="font-size:9pt;">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<?php foreach ($menus as $menu): ?>
|
||||
<li><a style="color: rgb(255,255,255)" href="<?= $menu['lienMenu'] ?>"><?= $menu['libeleMenu']; ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<!--
|
||||
<li><a style="color:white;">TESTS</a></li>
|
||||
-->
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row content">
|
||||
<div class="col-xs-1 sidenav">
|
||||
<ul id ="barre_laterale" class="sidebar-nav" style="background-color: rgb(40,96,144)">
|
||||
<?php foreach ($menusvue as $menuvue): ?>
|
||||
<li><a style="color: rgb(255,255,255)" class="btn-link" href="<?= $menuvue['lienMenu'] ?>"><?= $menuvue['libeleMenu']; ?></a></li>
|
||||
<hr>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-10 text-left" style="padding-left:5px; padding-top:0px; padding-right:0px; font-size:8pt;">
|
||||
<div id="contenu">
|
||||
<div id="div_test_gabarit">
|
||||
</div>
|
||||
|
||||
<?= $contenu ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="barre_laterale_d" class="col-xs-1 sidenav" style="font-size:8pt; padding:0px;">
|
||||
|
||||
<INPUT class="sr-only" TYPE="button" id="nomClient_C" NAME="nomClient_C" value="<?= $this->nettoyer($_SESSION['nomClient_C']) ?>" onclick="javascript:afficher_client_id();">
|
||||
|
||||
<table class="table table-responsive table-condensed" style="font-size:6pt;" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Context</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> <textarea rows="2" cols="25" readonly ><?= $this->nettoyer($_SESSION['nomSociete']) ?></textarea> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><INPUT TYPE="button" TYPE="button" value="<?= substr($this->nettoyer($_SESSION['utilisateur_C']), 0, 25) ?>" ></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <INPUT TYPE="button" id="numeroClient_C" NAME="numeroClient_C" value="<?= _('Client').' : '.$this->nettoyer($_SESSION['numeroClient_C']) ?>" onclick="javascript:afficher_client_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <textarea rows="3" cols="25" readonly ><?= $this->nettoyer($_SESSION['nomClient_C']) ?></textarea> </td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><INPUT TYPE="button" id="numeroPolice_C" NAME="numeroPolice_C" value="Pol. <?= $this->nettoyer($_SESSION['numeroPolice_C']) ?>" onclick="javascript:afficher_police_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><INPUT TYPE="button" id="codeGcAssureur_C" NAME="codeGcAssureur_C" value="Garant : <?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>" onclick="javascript:afficher_garant('<?=$this->nettoyer($_SESSION['codeGcAssureur_C']);?>');"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><INPUT style="font-size:8pt; background-color: yellow;" TYPE="text" value="<?= $this->nettoyer(format_N($_SESSION['ndAdh_C'])) . " > " . $this->nettoyer(format_N($_SESSION['ndDep_C'])) . " > " . $this->nettoyer(format_N($_SESSION['ndActif_C'])) ?>" readonly ></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> <INPUT TYPE="button" id="numeroAdherent_C" NAME="numeroAdherent_C" value="Fam. <?= $this->nettoyer($_SESSION['numeroAdherent_C']) ?>" onclick="javascript:afficher_adherent_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <INPUT TYPE="button" id="adherent_C" NAME="adherent_C" value="<?= substr($this->nettoyer($_SESSION['adherent_C']), 0, 25) ?>" onclick="javascript:afficher_adherent_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <INPUT TYPE="button" id="numeroBeneficiaire_C" NAME="numeroBeneficiaire_C" value="<?= _('Dép').' : '.$this->nettoyer($_SESSION['numeroBeneficiaire_C']) ?>" onclick="javascript:afficher_beneficiaire_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <INPUT TYPE="button" id="beneficiaire_C" NAME="beneficiaire_C" value="<?= substr($this->nettoyer($_SESSION['beneficiaire_C']), 0, 25) ?>" onclick="javascript:afficher_beneficiaire_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<?php if ($_SESSION['lienPhoto_C']>" " ): ?>
|
||||
<img src="<?= $_SESSION['dossierSociete'].'/Photos/'.$_SESSION['lienPhoto_C'] ?>" style="width: 100px;" data-toggle="modal" data-target="#pop_photo">
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <a href="Changermotpass/"><img src="Bootstrap/images/cle.png" alt="Changer mot de passe"> </a> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><INPUT style="font-size:8pt;" TYPE="button" TYPE="button" value="Lang : <?= $this->nettoyer($_SESSION['libelleLang']) ?>" ></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <INPUT class="btn btn-warning" style="font-size:8pt;" TYPE="button" value="Chang Lang" onclick="javascript:changer_langue();" > </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <INPUT class="btn btn-info" style="font-size:8pt;" TYPE="button" value="<?= _('Test Connexion?') ?>" onclick="javascript:test_online();" > </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><INPUT id="test_connexion" NAME="test_connexion" style="font-size:11pt; background-color: green;" TYPE="text" value="<?= _('Etat Connexion') ?>" readonly ></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php if ($_SESSION['modeDevis']=="1"): ?>
|
||||
<table class="table table-responsive table-condensed" style="font-size:6pt;" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th> <?= _("Devis") ?> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> <INPUT TYPE="button" id="numeroClient_d_C" NAME="numeroClient_d_C" value="Prosp : <?= $this->nettoyer($_SESSION['numeroClient_d_C']) ?>" onclick="javascript:afficher_client_d_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <INPUT TYPE="button" id="nomClient_d_C" NAME="nomClient_d_C" value="<?= $this->nettoyer($_SESSION['nomClient_d_C']) ?>" onclick="javascript:afficher_client_d_id();"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><INPUT TYPE="button" id="numeroPolice_d_C" NAME="numeroPolice_d_C" value="<?= $this->nettoyer($_SESSION['numeroPolice_d_C']) ?>" onclick="javascript:afficher_police_d_id_init();"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
|
||||
<footer class="container-fluid text-center" style="padding-left:0px; padding-top:0px; padding-right:0px;padding-bottom:5px; font-size:10pt;">
|
||||
Messages
|
||||
<div id="nbMessagesNonLus" name="nbMessagesNonLus">
|
||||
<INPUT class='form-control timer' id="timer" NAME="timer" TYPE="button" value="0" onclick="javascript:pop_messagerie();" >
|
||||
</div>
|
||||
|
||||
<INPUT class="form-control btn btn-primary" style="font-size:7pt;" TYPE="button" value="<?= _("Gérer Messages") ?>" onclick="javascript:gerer_messagerie();" >
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<button id="btn_pop_messagerie" NAME="btn_pop_messagerie" type="button" class="sr-only" data-toggle="modal" data-target="#popmessagerie"> <?= _("Afficher les messages non lus...") ?> </button>
|
||||
|
||||
<div class="modal fade" id="popmessagerie" role="dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"> <?= _("Fermer") ?> </button>
|
||||
<h4 class="modal-title"> <?= _("Messages non lus") ?> </h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div id="div_messagerie">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button id="btn_close_messagerie" NAME="btn_close_messagerie" type="button" class="btn btn-default" data-dismiss="modal"> <?= _("Fermer") ?> </button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="Bootstrap/js/jquery.min.js"></script>
|
||||
<script src="Bootstrap/js/jquery-ui.js"></script>
|
||||
|
||||
<script src="Bootstrap/js/timer.jquery.js"></script>
|
||||
|
||||
<script src="Bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<?php if (est_anglophone()) : ?>
|
||||
<script src="Js/datepicker-eng.js"></script>
|
||||
<?php else: ?>
|
||||
<script src="Js/datepicker-fr.js"></script>
|
||||
<?php endif; ?>
|
||||
|
||||
<script src="Js/fonctions.js?ver=2021.10.25.09"></script>
|
||||
|
||||
<script src="<?= $_SESSION['dossierSociete'].'/Js/societe.js' ?>"></script>
|
||||
|
||||
<script src="Bootstrap/js/jquery.timer.js"></script>
|
||||
<script src="Bootstrap/js/ajaxmask.js"></script>
|
||||
<script src="Bootstrap/js/custom.js"></script>
|
||||
<script src="Bootstrap/js/datatables.min.js"></script>
|
||||
<script src="Bootstrap/js/select2.min.js"></script>
|
||||
<script src="Bootstrap/js/bootstrap-select.min.js"></script>
|
||||
|
||||
<div id="div_ajaxgabarit">
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="pop_photo" role="dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button id="btn_close_pop" name="btn_close_pop" type="button" class="close" data-dismiss="modal"> <?= _("Fermer") ?> </button>
|
||||
<h4 class="modal-title"> <?= _("Photo") ?> </h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<img src="<?= $_SESSION['dossierSociete'].'/Photos/'.$_SESSION['lienPhoto_C'] ?>" style="width: 350px;">
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal"> <?= _("Fermer") ?> </button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
raffraichier_gabarit();
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('#timer').timer({
|
||||
// duration: '1m',
|
||||
duration: '10s',
|
||||
callback: function() {
|
||||
raffraichier_messagerie();
|
||||
},
|
||||
repeat: true
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="div_gettext" class="sr-only">
|
||||
<?= _("Retour") ?>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -48120,13 +48120,11 @@ function filtreTableReference(numeroTable) {
|
|||
const racineWeb = $("#racineWeb").val();
|
||||
const $divListe = $("#div_listetables");
|
||||
|
||||
// 1. DESTRUCTION TOTALE de l'existant
|
||||
// Nettoyage radical
|
||||
if ($("#listetables").length) {
|
||||
$("#listetables").selectpicker('destroy'); // Tue l'instance JS
|
||||
$("#listetables").selectpicker('destroy');
|
||||
}
|
||||
// Supprime physiquement tous les menus détachés du body
|
||||
$('.bootstrap-select.bs-container').remove();
|
||||
// Vide le conteneur pour repartir de zéro
|
||||
$divListe.empty();
|
||||
|
||||
$.ajax({
|
||||
|
|
@ -48134,35 +48132,30 @@ function filtreTableReference(numeroTable) {
|
|||
type : 'post',
|
||||
data: { numeroTable: numeroTable },
|
||||
success: function(data) {
|
||||
// 1. On injecte le HTML brut
|
||||
$divListe.html(data);
|
||||
// Injection du HTML
|
||||
$divListe.html(data);
|
||||
|
||||
const $select = $("#listetables");
|
||||
const $select = $("#listetables");
|
||||
|
||||
// 2. NETTOYAGE CHIRURGICAL des options
|
||||
// On force le texte à être propre et on supprime l'attribut title
|
||||
// qui cause souvent le doublon dans le rendu du plugin
|
||||
$select.find('option').each(function() {
|
||||
const propre = $(this).text().trim();
|
||||
$(this).text(propre); // Nettoie le texte interne
|
||||
$(this).attr('data-content', ''); // Supprime d'éventuels attributs parasites
|
||||
$(this).removeAttr('title'); // Supprime le titre qui double le rendu
|
||||
});
|
||||
// On retire la classe 'selectpicker' temporairement pour éviter
|
||||
// que le script global ne l'attrape avant nous
|
||||
$select.removeClass('selectpicker');
|
||||
|
||||
// 3. INITIALISATION avec paramètres de sécurité
|
||||
$select.selectpicker({
|
||||
liveSearch: true,
|
||||
size: 10,
|
||||
container: 'body',
|
||||
style: 'btn-form-select', // Utilise votre classe de style
|
||||
noneSelectedText: (typeof _ !== 'undefined') ? _("-- Sélectionner --") : "-- Sélectionner --"
|
||||
});
|
||||
setTimeout(function() {
|
||||
$select.selectpicker({
|
||||
liveSearch: true,
|
||||
size: 10,
|
||||
container: 'body',
|
||||
width: '100%'
|
||||
});
|
||||
|
||||
// On remet la classe après initialisation si nécessaire pour le CSS
|
||||
$select.addClass('selectpicker');
|
||||
|
||||
// 4. Focus UX
|
||||
setTimeout(function() {
|
||||
$divListe.find('.dropdown-toggle').focus();
|
||||
}, 200);
|
||||
}
|
||||
// Focus sur le bouton généré
|
||||
$divListe.find('.dropdown-toggle').focus();
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
/*
|
||||
* INTER SANTÉ — gabarit.php
|
||||
* Point d'entrée principal — Structure modulaire SaaS Premium
|
||||
* Refonte UI/UX v2025
|
||||
* Refonte UI/UX v2026
|
||||
*/
|
||||
|
||||
require_once 'gabarit_queries.php';
|
||||
|
|
|
|||
|
|
@ -96,9 +96,15 @@
|
|||
});
|
||||
}
|
||||
|
||||
/* --- Bootstrap Select global --- */
|
||||
/* --- Bootstrap Select global (Version Corrigée) --- */
|
||||
if ($.fn.selectpicker) {
|
||||
$('select.selectpicker').selectpicker('refresh');
|
||||
// On n'utilise plus 'refresh' à l'aveugle sur tout ce qui bouge
|
||||
// On laisse les fonctions spécifiques gérer leurs propres instances
|
||||
$('.selectpicker').each(function() {
|
||||
if (!$(this).parent().hasClass('bootstrap-select')) {
|
||||
$(this).selectpicker();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* --- Sidebar toggle ---
|
||||
|
|
@ -151,94 +157,5 @@
|
|||
|
||||
}); // end document.ready
|
||||
</script>
|
||||
|
||||
<!-- Styles sidebar toggle + ligne sélectionnée -->
|
||||
<style>
|
||||
/* ── Ligne DataTable sélectionnée ── */
|
||||
.table tbody tr.row-selected > td {
|
||||
background: rgba(26, 107, 74, 0.08) !important;
|
||||
border-left: 3px solid var(--color-accent, #0abf7c);
|
||||
}
|
||||
|
||||
/* ── Transitions fluides (doivent être déclarées ici, APRÈS le CSS du template,
|
||||
pour ne pas être écrasées par Bootstrap/css/style.css) ── */
|
||||
#sidebar {
|
||||
transition: width 0.3s cubic-bezier(.4,0,.2,1),
|
||||
transform 0.3s cubic-bezier(.4,0,.2,1) !important;
|
||||
overflow: hidden !important;
|
||||
will-change: width;
|
||||
}
|
||||
#main {
|
||||
transition: margin-left 0.3s cubic-bezier(.4,0,.2,1) !important;
|
||||
will-change: margin-left;
|
||||
}
|
||||
|
||||
/* ── Mode réduit (icônes seules) — desktop ── */
|
||||
body.toggle-sidebar #sidebar {
|
||||
width: 68px !important;
|
||||
min-width: 68px !important;
|
||||
}
|
||||
body.toggle-sidebar #main {
|
||||
margin-left: 68px !important;
|
||||
}
|
||||
/* Masquer textes et chevrons */
|
||||
body.toggle-sidebar #sidebar .nav-link span,
|
||||
body.toggle-sidebar #sidebar .nav-link .bi-chevron-down,
|
||||
body.toggle-sidebar #sidebar .sidebar-section-label {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
display: inline-block; /* garder dans le flux mais invisible — évite le reflow brutal */
|
||||
transition: opacity 0.2s ease, width 0.2s ease;
|
||||
}
|
||||
body:not(.toggle-sidebar) #sidebar .nav-link span,
|
||||
body:not(.toggle-sidebar) #sidebar .nav-link .bi-chevron-down {
|
||||
opacity: 1;
|
||||
width: auto;
|
||||
transition: opacity 0.25s ease 0.05s, width 0.25s ease;
|
||||
}
|
||||
/* Centrer les icônes et agrandir légèrement */
|
||||
body.toggle-sidebar #sidebar .nav-link {
|
||||
justify-content: center !important;
|
||||
padding: 11px 0 !important;
|
||||
}
|
||||
body.toggle-sidebar #sidebar .nav-link i:first-child {
|
||||
font-size: 1.25rem !important;
|
||||
width: auto !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
/* Fermer les sous-menus */
|
||||
body.toggle-sidebar #sidebar .nav-content {
|
||||
display: none !important;
|
||||
}
|
||||
/* Tooltip natif au survol en mode réduit */
|
||||
body.toggle-sidebar #sidebar .nav-link {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* ── Mobile : slide depuis la gauche ── */
|
||||
@media (max-width: 1199px) {
|
||||
#sidebar {
|
||||
transform: translateX(-100%);
|
||||
width: var(--sidebar-width, 240px) !important;
|
||||
}
|
||||
#sidebar.sidebar-mobile-open {
|
||||
transform: translateX(0);
|
||||
}
|
||||
/* Overlay semi-transparent derrière le sidebar mobile */
|
||||
#sidebar.sidebar-mobile-open::after {
|
||||
content: '';
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: rgba(0,0,0,0.35);
|
||||
z-index: -1;
|
||||
}
|
||||
#main {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user