fold-ng 0.17.0 → 0.18.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/CHANGELOG.md CHANGED
@@ -8,6 +8,80 @@ All notable changes to **fold-ng** are documented here. The format follows
8
8
 
9
9
  _Nothing yet._
10
10
 
11
+ ## [0.18.0] - 2026-08-28
12
+
13
+ ### Added
14
+
15
+ - **`fold-app-shell` : la bande `subheader`**, sous la barre d'en-tête — une
16
+ sous-barre de navigation, un ruban de contexte, une rangée de filtres.
17
+
18
+ Elle suit **exactement la règle de placement de l'en-tête** :
19
+ `subheaderLayout="inset"` (par défaut) la pose au-dessus de la colonne de
20
+ contenu, les rails montant à son flanc ; `"full"` l'étire sur toutes les
21
+ colonnes, au-dessus des rails. Deux réglages de hauteur l'accompagnent,
22
+ `subheaderHeight` (52) et `subheaderHeightMobile` (48), avec leurs variables
23
+ `--fold-shell-subheader-height*` — la même paire entrée typée / variable CSS
24
+ que le reste de la coque.
25
+
26
+ Comme le pied, elle est **auto-effaçante** : sans rien de projeté, elle ne
27
+ réclame aucune rangée. Elle est rendue en `<div>` nu — `<header>` est déjà
28
+ pris, et la sémantique de la bande (un `<nav>`, une barre d'outils) appartient
29
+ à ce que l'application y projette.
30
+
31
+ Le tiroir mobile et son voile descendent maintenant de
32
+ `--fold-shell-chrome-offset` : l'en-tête, plus la bande quand il y en a une.
33
+ Sans ça, la navigation mobile se serait glissée **par-dessus** la sous-barre.
34
+
35
+ ### Changed
36
+
37
+ - **`fold-app-shell` : les rangées de la grille sont générées, plus écrites à la
38
+ main.** Trois bandes optionnellement pleine largeur font dix-huit états ;
39
+ l'en-tête et le pied à eux seuls occupaient déjà quatre blocs
40
+ `grid-template-areas`, et ajouter la sous-barre les aurait portés à dix-huit
41
+ blocs copiés-collés.
42
+
43
+ Une boucle les émet depuis les deux mêmes faits que portent déjà les classes
44
+ de l'hôte. Chaque sélecteur généré est **exact** — une bande encastrée nomme
45
+ son `:not(.*-full)`, une bande absente son `:not(:has([…]))` — si bien que
46
+ deux règles ne peuvent plus viser la même coque : la cascade ne départage plus
47
+ rien, l'ordre des sources non plus. C'est aussi ce qui permet à la version
48
+ étroite de ré-émettre le même jeu et de gagner simplement en venant après.
49
+
50
+ Aucun changement de rendu : les quatre combinaisons existantes produisent les
51
+ mêmes rangées qu'avant.
52
+
53
+ ## [0.17.1] - 2026-08-26
54
+
55
+ ### Fixed
56
+
57
+ - **`fold-data-table` : le mode cartes ne rendait RIEN avec l'API documentée.**
58
+ `narrowLayout="cards"` plus un `foldRowCard` projeté — la forme que la 0.13.0
59
+ a introduite et que le JSDoc recommande — laissait un espace blanc à la place
60
+ du tableau.
61
+
62
+ Le gabarit basculait bien : `@if (!cardMode())` retirait le `<table>` et
63
+ construisait la liste, cartes remplies du contenu du consommateur. La feuille
64
+ de style, elle, gardait une **seconde porte** — `.folddt--custom.folddt--narrow`
65
+ — dont les classes venaient de l'entrée **dépréciée** `mobileLayout`. Sur la
66
+ nouvelle API cette paire ne se posait jamais, et la liste restait
67
+ `display: none`. Le tableau était parti, les cartes étaient cachées.
68
+
69
+ `auto-cards` était atteint pour la même raison : `.folddt--cards` n'avait
70
+ aucune règle en face. Seul `mobileLayout="custom"`, le chemin déprécié,
71
+ fonctionnait.
72
+
73
+ La correction retire la porte plutôt que de la réparer : la liste n'est dans
74
+ l'arbre QUE en mode cartes, donc sa présence suffit. Ce fichier disait déjà
75
+ « two gates that had to agree were one gate too many » — et en gardait deux.
76
+ Les classes `folddt--cards` et `folddt--custom`, qui ne stylaient plus rien,
77
+ disparaissent avec.
78
+
79
+ Aucun cas ne l'avait vu : les huit cas « mobile layout » pilotaient tous
80
+ `mobileLayout`. Un cas pilote désormais `narrowLayout`, et un autre lit la
81
+ **feuille de style** — le DOM n'a jamais été le problème, et jsdom n'applique
82
+ pas les styles d'un composant, si bien qu'un `getComputedStyle` y passe au
83
+ vert sur une liste cachée.
84
+
11
85
  ## [0.17.0] - 2026-08-26
12
86
 
13
87
  ### Added
@@ -2172,7 +2246,9 @@ design-token stylesheet.
2172
2246
  `currentColor`; `prefers-reduced-motion` + `forced-colors` are respected;
2173
2247
  strings localise via inputs / providers (`provideFoldPanelLabels`).
2174
2248
 
2175
- [unreleased]: https://github.com/hugoheynard/fold-ng/compare/v0.17.0...HEAD
2249
+ [unreleased]: https://github.com/hugoheynard/fold-ng/compare/v0.18.0...HEAD
2250
+ [0.18.0]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.18.0
2251
+ [0.17.1]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.17.1
2176
2252
  [0.17.0]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.17.0
2177
2253
  [0.16.0]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.16.0
2178
2254
  [0.15.0]: https://github.com/hugoheynard/fold-ng/releases/tag/v0.15.0