@zevra/ui 0.43.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/data.css CHANGED
@@ -198,9 +198,11 @@
198
198
  outline-offset: -2px;
199
199
  }
200
200
 
201
- /* ⚠️ Ni état sélectionné, ni :focus-within, ni ligne active : la source n'en
202
- * contient aucun, et les inventer ferait apparaître un fond de plus dans un
203
- * système qui n'en a que deux (blanc, survol). */
201
+ /* ⚠️ La source ne contient ni état sélectionné, ni :focus-within, ni ligne
202
+ * active : une liste à LIRE n'en a pas besoin. Une grille qu'on OPÈRE, si :
203
+ * la ligne cochée (--selected) et la ligne active (--on) sont arbitrées
204
+ * plus bas, section « Grille de données », HORS RELEVÉ, sans troisième
205
+ * gris (l'une sur --accent-soft, l'autre sur le fond du survol). */
204
206
 
205
207
  /* ─── En-tête triable ──────────────────────────────────────────────────
206
208
  * ⚠️ HORS RELEVÉ : ajouté le 25/08/2026 avec l'adaptateur TanStack Table.
@@ -1037,8 +1039,8 @@
1037
1039
  * du cadre pendant que les cellules continuent. --zv-cols-somme et
1038
1040
  * --zv-cols-n sont posés par le composant (largeurs choisies par
1039
1041
  * l'utilisateur, pas des valeurs de charte). */
1040
- .zv-table--grille > .zv-table__head,
1041
- .zv-table--grille > .zv-row {
1042
+ .zv-table--grille .zv-table__head,
1043
+ .zv-table--grille .zv-row {
1042
1044
  min-width: calc(
1043
1045
  var(--zv-cols-somme, 0px) + 2 * var(--zv-grille-pad) +
1044
1046
  (var(--zv-cols-n, 1) - 1) * var(--zv-grille-gap)
@@ -1212,7 +1214,8 @@
1212
1214
  }
1213
1215
 
1214
1216
  .zv-table__head .zv-cell--pin,
1215
- .zv-row:hover .zv-cell--pin {
1217
+ .zv-row:hover .zv-cell--pin,
1218
+ .zv-row--on .zv-cell--pin {
1216
1219
  --zv-pin-fond: var(--panel);
1217
1220
  }
1218
1221
 
@@ -1229,6 +1232,19 @@
1229
1232
  --zv-pin-fond: var(--accent-soft);
1230
1233
  }
1231
1234
 
1235
+ /* ─── Ligne active ──────────────────────────────────────────────────────
1236
+ * La ligne dont on regarde le détail (un aperçu ouvert à côté de la liste).
1237
+ * ⚠️ HORS RELEVÉ, repris de Sunday (24/09/2026), qui le peignait dans son
1238
+ * propre CSS faute de l'avoir ici. Aucun troisième fond : le fond du
1239
+ * survol, et un filet d'accent à gauche. En ombre INTÉRIEURE et non en
1240
+ * bordure : une bordure décalerait toute la rangée de trois pixels au
1241
+ * moment du clic. Distincte de la ligne cochée (--selected), qui est une
1242
+ * sélection pour agir. */
1243
+ .zv-row--on {
1244
+ background: var(--panel);
1245
+ box-shadow: inset 3px 0 0 var(--accent);
1246
+ }
1247
+
1232
1248
  /* La case de sélection : centrée dans sa piste, sans troncature. */
1233
1249
  .zv-cell--case {
1234
1250
  display: flex;
@@ -1279,11 +1295,18 @@
1279
1295
  color: var(--accent);
1280
1296
  }
1281
1297
 
1282
- /* La taille de page : le <select> du paquet, à sa largeur de contenu. */
1298
+ /* La taille de page : le SelectMenu du paquet, à sa largeur de contenu
1299
+ * (il prend la largeur de son conteneur par défaut). */
1283
1300
  .zv-grille__taille {
1284
1301
  width: auto;
1285
- padding-block: 5px;
1286
- font-size: var(--app-sm);
1302
+ }
1303
+
1304
+ /* La liste d'un filtre à choix : le .zv-menu du paquet, posé dans
1305
+ * l'enveloppe flottante. Il défile au-delà d'une douzaine d'options plutôt
1306
+ * que de couvrir la page. */
1307
+ .zv-grille__liste {
1308
+ max-height: min(320px, 60vh);
1309
+ overflow-y: auto;
1287
1310
  }
1288
1311
 
1289
1312
  /* Le résumé d'une plage (nombres, dates) dans la rangée de filtres : un
@@ -1337,6 +1360,74 @@
1337
1360
  padding-inline: 8px;
1338
1361
  }
1339
1362
 
1363
+ /* ─── Remplir son parent ────────────────────────────────────────────────
1364
+ * La grille prend la hauteur d'une colonne flex bornée : seules les lignes
1365
+ * défilent. Les intitulés et les filtres sont groupés dans un bloc COLLANT
1366
+ * (.zv-table__haut) : collées une à une, les deux rangées se poseraient au
1367
+ * même endroit et la seconde recouvrirait la première. */
1368
+ .zv-grille--remplir {
1369
+ display: flex;
1370
+ flex: 1;
1371
+ flex-direction: column;
1372
+ min-height: 0;
1373
+ }
1374
+
1375
+ .zv-table--remplir {
1376
+ flex: 1;
1377
+ min-height: 0;
1378
+ overflow: auto;
1379
+ }
1380
+
1381
+ .zv-table__haut {
1382
+ position: sticky;
1383
+ top: 0;
1384
+ z-index: 2;
1385
+ }
1386
+
1387
+ /* ─── Densité ───────────────────────────────────────────────────────────
1388
+ * Un tableau secondaire, posé dans une fiche : les rangées se resserrent,
1389
+ * rien d'autre ne change. Dérivé (6 px : la rangée de filtres). */
1390
+ .zv-table--dense .zv-row,
1391
+ .zv-table--dense .zv-table__head {
1392
+ padding-block: 6px;
1393
+ }
1394
+
1395
+ /* ─── Rangées qui ne sont pas des lignes ────────────────────────────────
1396
+ * Un intitulé de groupe, une ligne de saisie, un pied de totaux : sur le
1397
+ * fond du survol, et inertes (ni pointeur ni survol). */
1398
+ .zv-row--groupe,
1399
+ .zv-row--saisie,
1400
+ .zv-row--pied {
1401
+ background: var(--panel);
1402
+ cursor: default;
1403
+ }
1404
+
1405
+ .zv-row--groupe:hover,
1406
+ .zv-row--saisie:hover,
1407
+ .zv-row--pied:hover {
1408
+ background: var(--panel);
1409
+ }
1410
+
1411
+ .zv-row--groupe {
1412
+ display: block;
1413
+ padding-block: 6px;
1414
+ }
1415
+
1416
+ .zv-row--pied {
1417
+ font-weight: 600;
1418
+ }
1419
+
1420
+ /* Des champs à la hauteur d'une ligne, pas d'un formulaire. */
1421
+ .zv-row--saisie .zv-input {
1422
+ padding-block: 5px;
1423
+ }
1424
+
1425
+ /* Le nombre de lignes d'une valeur, au bout de son option. */
1426
+ .zv-grille__compte {
1427
+ margin-left: auto;
1428
+ flex: none;
1429
+ }
1430
+
1340
1431
  /* Le pied : compte à gauche, taille de page et sens à droite. */
1341
1432
  .zv-grille__pied {
1342
1433
  display: flex;
@@ -1347,7 +1438,7 @@
1347
1438
  @media (max-width: 767px) {
1348
1439
  /* En cartes, l'épinglage, les poignées et la largeur minimale n'ont plus
1349
1440
  * de sens : la carte prend la largeur de l'écran. */
1350
- .zv-table--grille > .zv-row {
1441
+ .zv-table--grille .zv-row {
1351
1442
  min-width: 0;
1352
1443
  }
1353
1444