diff --git a/css/style.css b/css/style.css
index 9c0bad9..fcd0bf6 100644
--- a/css/style.css
+++ b/css/style.css
@@ -988,10 +988,16 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
.epr-block-assign .epr-content{
display:flex;
flex-direction:column;
- gap:10px;
+ gap:0;
min-width:0;
}
+.epr-assign-divider{
+ border-top:1px solid #ced4da;
+ margin:14px 0 12px;
+ flex-shrink:0;
+}
+
.epr-block-assign .bib-container{
width:100%;
min-width:0;
@@ -1019,6 +1025,10 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
line-height:1.2;
}
+.epr-col-header-label--empty{
+ gap:0;
+}
+
.epr-line-header .btn-aide-bib{
width:18px;
height:18px;
@@ -1064,10 +1074,6 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
gap:8px;
}
-.epr-add-range-row{
- margin-top:4px;
-}
-
.epr-header-label{
display:inline-flex;
align-items:center;
@@ -1211,7 +1217,7 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
width:100%;
}
-/* MSIN-4379 — View en 1re col. ; Début/Fin largeur fixe ; stats en fr. */
+/* MSIN-4379 — View/OK/Suppr icônes ; stats regroupées ; marge droite libre acceptée. */
.epr-line{
display:grid;
grid-template-columns:
@@ -1220,10 +1226,8 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
58px
44px
48px
- minmax(52px, 1fr)
- minmax(52px, 1fr)
- minmax(52px, 1fr)
- 0fr;
+ auto
+ minmax(0, 1fr);
gap:8px;
align-items:center;
width:100%;
@@ -1237,12 +1241,34 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
58px
44px
48px
- minmax(48px, 1fr)
- minmax(48px, 1fr)
- minmax(48px, 1fr)
+ auto
28px;
}
+.epr-col-stats{
+ display:grid;
+ grid-template-columns:56px 48px 48px;
+ gap:4px;
+ align-items:center;
+ justify-content:start;
+ min-width:0;
+}
+
+.epr-col-stats > .bib-last,
+.epr-col-stats > .bib-used,
+.epr-col-stats > .bib-dispo{
+ text-align:center;
+ font-size:13px;
+ min-width:0;
+}
+
+.epr-line-header .epr-col-stats > div{
+ display:flex;
+ align-items:center;
+ justify-content:center;
+ min-width:0;
+}
+
.epr-line .bib-start,
.epr-line .bib-end{
width:100%;
@@ -1252,7 +1278,7 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
}
.epr-add-range-row{
- margin-top:4px;
+ margin-top:6px;
}
.epr-col-batch{
@@ -1275,6 +1301,7 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
flex-direction:column;
gap:10px;
width:100%;
+ padding-top:2px;
}
/* MOBILE */
diff --git a/php/inc_fx_promoteur.php b/php/inc_fx_promoteur.php
index d61ff0f..cdfab36 100644
--- a/php/inc_fx_promoteur.php
+++ b/php/inc_fx_promoteur.php
@@ -2681,17 +2681,32 @@ function fxBibGetInfoRow($clef) {
return $bibInfoCache[$clef];
}
-/** Libellé bib v4 — sur compte.php auto-crée si absent ; en AJAX, lecture seule + repli. */
-function fxBibTexte($clef, $mem_echo = 0, $strFallback = '') {
+/** Libellé bib v4 — sur compte.php auto-crée si absent ; en AJAX, lecture seule + repli.
+ * $blnAllowEmptyLabel : si true, info_texte vide en BD reste vide (en-têtes colonnes éditables). */
+function fxBibTexte($clef, $mem_echo = 0, $strFallback = '', $blnAllowEmptyLabel = false) {
$row = fxBibGetInfoRow($clef);
+ $blnHasDbRow = !empty($row) && array_key_exists('info_texte', $row);
$str = trim($row['info_texte'] ?? '');
+ if ($blnAllowEmptyLabel && $blnHasDbRow && $str === '') {
+ if ($mem_echo) {
+ echo '';
+ }
+ return '';
+ }
+
if ($str === '' || $str === $clef || $str === '*' . $clef . '*') {
if (!defined('MS1_BIB_AJAX') || !MS1_BIB_AJAX) {
- $str = trim(afficheTexte($clef, 0));
+ if (!$blnAllowEmptyLabel || $strFallback !== '') {
+ $str = trim(afficheTexte($clef, 0));
+ }
}
if ($str === '' || $str === $clef || $str === '*' . $clef . '*') {
- $str = $strFallback !== '' ? $strFallback : $clef;
+ if ($strFallback !== '') {
+ $str = $strFallback;
+ } else {
+ $str = $blnAllowEmptyLabel ? '' : $clef;
+ }
}
}
@@ -2769,10 +2784,15 @@ function fxBibBlockHeader($clef, $strFallback = '') {
return '';
}
-/** Cellule d'en-tête de colonne séquence + aide optionnelle. */
-function fxBibColHeader($clef, $strFallback) {
- return '