Add collapsible functionality for management blocks in event interface

This commit introduces a collapsible feature for the management blocks in the event interface, allowing users to expand or collapse sections for better navigation. New CSS styles have been added to support this functionality, and a button for toggling the visibility of the content has been implemented. The version code has been incremented to 4.72.651 to reflect these changes.
This commit is contained in:
2026-06-17 14:32:49 -04:00
parent ff5533bee1
commit b44a100bad
4 changed files with 86 additions and 3 deletions

View File

@ -1388,6 +1388,44 @@ a.ms1-trad-link.btn-aide-trad{
padding:10px;
font-weight:bold;
}
.epr-header--collapsible{
display:flex;
align-items:center;
justify-content:space-between;
gap:10px;
}
.epr-header--collapsible .epr-header-label{
flex:1;
min-width:0;
}
.epr-block-toggle{
flex-shrink:0;
width:28px;
height:28px;
padding:0;
border:1px solid rgba(255,255,255,.55);
border-radius:4px;
background:rgba(255,255,255,.12);
color:#fff;
font-size:13px;
line-height:1;
cursor:pointer;
}
.epr-block-toggle:hover,
.epr-block-toggle:focus{
background:rgba(255,255,255,.22);
color:#fff;
outline:none;
}
.epr-block.is-collapsed .epr-content{
display:none;
}
.bib-container .batch-checkbox{
display:none;
}

View File

@ -1959,6 +1959,32 @@ if ($strLangue == 'fr') {
if (moduleBib) {
// MSIN-4379 — Réduire / développer les blocs gestion et assignation (en-tête seul visible).
moduleBib.addEventListener('click', function (e) {
let btnToggle = e.target.closest('.epr-block-toggle');
if (!btnToggle || !moduleBib.contains(btnToggle)) {
return;
}
let block = btnToggle.closest('.epr-block');
if (!block) {
return;
}
let collapsed = block.classList.toggle('is-collapsed');
btnToggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true');
let label = collapsed
? (btnToggle.getAttribute('data-label-expand') || '')
: (btnToggle.getAttribute('data-label-collapse') || '');
if (label) {
btnToggle.setAttribute('aria-label', label);
btnToggle.setAttribute('title', label);
}
let icon = btnToggle.querySelector('.fa');
if (icon) {
icon.classList.toggle('fa-chevron-up', !collapsed);
icon.classList.toggle('fa-chevron-down', collapsed);
}
});
// ============================================================
// MSIN-4379 — Tippy.js (module #module-bib uniquement)
// info_texte → data-tippy-content (tip court)

View File

@ -2830,6 +2830,19 @@ function fxBibBlockHeader($clef, $strFallback = '', $docAnchorClef = '') {
return $html . '</span>';
}
/** Bouton réduire / développer le corps du bloc (en-tête reste visible). */
function fxBibBlockCollapseToggle($strLangue = 'fr') {
$strCollapse = ($strLangue === 'en') ? 'Collapse section' : 'Réduire la section';
$strExpand = ($strLangue === 'en') ? 'Expand section' : 'Développer la section';
return '<button type="button" class="epr-block-toggle" aria-expanded="true"'
. ' data-label-collapse="' . fxBibEsc($strCollapse) . '"'
. ' data-label-expand="' . fxBibEsc($strExpand) . '"'
. ' aria-label="' . fxBibEsc($strCollapse) . '"'
. ' title="' . fxBibEsc($strCollapse) . '">'
. '<i class="fa fa-chevron-up" aria-hidden="true"></i></button>';
}
/** Cellule d'en-tête de colonne séquence + aide optionnelle (info_texte peut être vide). */
function fxBibColHeader($clef, $strFallback = '') {
$strLabel = fxBibTexte($clef, 0, $strFallback, true);
@ -3187,7 +3200,10 @@ if ($teamMode <= 0) {
<div class="epr-col-right">
<?php /* MSIN-4379 — Gestion des épreuves : quantités et paramètres (distinct de l'assignation de dossard). */ ?>
<div class="epr-block epr-block-gestion">
<div class="epr-header"><?php echo fxBibBlockHeader('bib_v4_gestion_title', 'Gestion des épreuves'); ?></div>
<div class="epr-header epr-header--collapsible">
<?php echo fxBibBlockHeader('bib_v4_gestion_title', 'Gestion des épreuves'); ?>
<?php echo fxBibBlockCollapseToggle($strLangue); ?>
</div>
<div class="epr-content">
<?php echo renderBibGestionEpreuve((int)$tabEpreuves[$i]['epr_id'], (int)$int_eve_id, $strLangue); ?>
</div>
@ -3195,7 +3211,10 @@ if ($teamMode <= 0) {
<?php /* MSIN-4379 — Assignation de dossard : séquences + actions (ex 3e colonne). */ ?>
<div class="epr-block epr-block-assign">
<div class="epr-header"><?php echo fxBibBlockHeader('bib_v4_assign_title', 'Assignation de dossard', 'bib_v4_assign_doc'); ?></div>
<div class="epr-header epr-header--collapsible">
<?php echo fxBibBlockHeader('bib_v4_assign_title', 'Assignation de dossard', 'bib_v4_assign_doc'); ?>
<?php echo fxBibBlockCollapseToggle($strLangue); ?>
</div>
<div class="epr-content">
<?php if (count($tabBibStats) == 0) { ?>

View File

@ -7,7 +7,7 @@
* Constantes *
*
**************/
define('_VERSION_CODE', '4.72.650');
define('_VERSION_CODE', '4.72.651');
define('_DATE_CODE', '2026-06-17');
//MSIN-4290
define('QR_SECRET_KEY', 'ms1_qr_2026_cle_secrete_longue_et_fixe');