Merge pull request 'Flowdeck 7.84.15 — barre v0.4.1 : correctif des icônes invisibles du menu compte (#125)' (#50) from hub12-barre-v041 into main
This commit was merged in pull request #50.
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
## v7.84.15 (2026-11-05) — Barre commune v0.4.1 : correctif des icônes invisibles du menu compte (fusion #125)
|
||||||
|
|
||||||
|
- **Barre d'apps v0.4.1 vendangée (dracodev-commons, branche `menu-compte-icones-svg-ns-v0-4-1`, PR commons #11)** : seul `static/js/vendor/draco-barre.js` change, remplacé verbatim par la v0.4.1 ; le CSS et le fragment `app/templates/_draco_bar.html` sont inchangés.
|
||||||
|
- **Correctif** : en v0.4.0, `menuIcone()` créait le `<svg>` des icônes et ses primitives via `document.createElement()` — espace de noms **HTML**, jamais dessinés par le navigateur : les libellés du menu compte étaient décalés d'un cran d'icône, sans aucun glyphe. La v0.4.1 crée tout via `document.createElementNS()` (espace de noms SVG). Glyphes, CSS et comportements inchangés.
|
||||||
|
- **Cache** : le bump 7.84.14 → 7.84.15 change aussi `asset_version`, donc les navigateurs ne garderont pas l'ancienne barre.
|
||||||
|
- Tests : `tests/test_draco_bar_texte.py` étendu (création en espace de noms SVG verrouillée).
|
||||||
|
|
||||||
## v7.84.14 (2026-11-05) — Barre commune v0.4.0 : icônes monoline du menu compte (HUB-11)
|
## v7.84.14 (2026-11-05) — Barre commune v0.4.0 : icônes monoline du menu compte (HUB-11)
|
||||||
|
|
||||||
- **Barre d'apps v0.4.0 vendangée (dracodev-commons, branche `menu-compte-icones-v0-4-0`, PR commons #10)** : `static/css/draco-barre.css` et `static/js/vendor/draco-barre.js` remplacés verbatim par la v0.4.0 ; le fragment `app/templates/_draco_bar.html` est inchangé (aucune clé d'URL nouvelle).
|
- **Barre d'apps v0.4.0 vendangée (dracodev-commons, branche `menu-compte-icones-v0-4-0`, PR commons #10)** : `static/css/draco-barre.css` et `static/js/vendor/draco-barre.js` remplacés verbatim par la v0.4.0 ; le fragment `app/templates/_draco_bar.html` est inchangé (aucune clé d'URL nouvelle).
|
||||||
|
|||||||
@@ -29,6 +29,9 @@
|
|||||||
replacées à gauche du libellé par order: -1 (l'item est en
|
replacées à gauche du libellé par order: -1 (l'item est en
|
||||||
flex), couleur atténuée --ink-2, pleine --ink au survol/focus.
|
flex), couleur atténuée --ink-2, pleine --ink au survol/focus.
|
||||||
Jetons repris du prototype validé Console v7.2.
|
Jetons repris du prototype validé Console v7.2.
|
||||||
|
v0.4.1 (fusion #125) : menu compte resserré — min-width
|
||||||
|
248 → 232 px, le panneau épouse le contenu (demande de Bruno :
|
||||||
|
le menu était trop large une fois les icônes visibles).
|
||||||
Thème : clair par défaut, sombre via [data-theme="dark"] sur <html>
|
Thème : clair par défaut, sombre via [data-theme="dark"] sur <html>
|
||||||
ou prefers-color-scheme si l'app intégratrice ne force rien
|
ou prefers-color-scheme si l'app intégratrice ne force rien
|
||||||
(aucun attribut data-theme sur <html>). */
|
(aucun attribut data-theme sur <html>). */
|
||||||
@@ -86,7 +89,7 @@
|
|||||||
* droite ; ses items réutilisent .draco-apps-item. */
|
* droite ; ses items réutilisent .draco-apps-item. */
|
||||||
.draco-compte-menu {
|
.draco-compte-menu {
|
||||||
position: absolute; top: calc(100% + 6px); right: 10px; z-index: 400;
|
position: absolute; top: calc(100% + 6px); right: 10px; z-index: 400;
|
||||||
min-width: 248px; padding: 6px;
|
min-width: 232px; padding: 6px;
|
||||||
background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
|
background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
|
||||||
box-shadow: 0 16px 44px rgb(0 0 0 / .28);
|
box-shadow: 0 16px 44px rgb(0 0 0 / .28);
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+8
-2
@@ -529,11 +529,17 @@
|
|||||||
["line", { x1: "21", y1: "12", x2: "9", y2: "12" }]
|
["line", { x1: "21", y1: "12", x2: "9", y2: "12" }]
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
/* Espace de noms SVG — OBLIGATOIRE : un élément « svg » (ou
|
||||||
|
* « path », « circle »…) créé par createElement() appartient à
|
||||||
|
* l'espace de noms HTML et le navigateur ne le dessine JAMAIS
|
||||||
|
* (bug v0.4.0 : libellés décalés d'un cran d'icône, aucun glyphe
|
||||||
|
* visible ; corrigé en v0.4.1, carte fusion #125). */
|
||||||
|
var SVG_NS = "http://www.w3.org/2000/svg";
|
||||||
function menuIcone(nom) {
|
function menuIcone(nom) {
|
||||||
var span = document.createElement("span");
|
var span = document.createElement("span");
|
||||||
span.className = "draco-menu-icone";
|
span.className = "draco-menu-icone";
|
||||||
span.setAttribute("aria-hidden", "true");
|
span.setAttribute("aria-hidden", "true");
|
||||||
var svg = document.createElement("svg");
|
var svg = document.createElementNS(SVG_NS, "svg");
|
||||||
svg.setAttribute("viewBox", "0 0 24 24");
|
svg.setAttribute("viewBox", "0 0 24 24");
|
||||||
svg.setAttribute("fill", "none");
|
svg.setAttribute("fill", "none");
|
||||||
svg.setAttribute("stroke", "currentColor");
|
svg.setAttribute("stroke", "currentColor");
|
||||||
@@ -542,7 +548,7 @@
|
|||||||
svg.setAttribute("stroke-linejoin", "round");
|
svg.setAttribute("stroke-linejoin", "round");
|
||||||
svg.setAttribute("focusable", "false");
|
svg.setAttribute("focusable", "false");
|
||||||
(MENU_ICONES[nom] || []).forEach(function (spec) {
|
(MENU_ICONES[nom] || []).forEach(function (spec) {
|
||||||
var el = document.createElement(spec[0]);
|
var el = document.createElementNS(SVG_NS, spec[0]);
|
||||||
for (var k in spec[1]) el.setAttribute(k, spec[1][k]);
|
for (var k in spec[1]) el.setAttribute(k, spec[1][k]);
|
||||||
svg.appendChild(el);
|
svg.appendChild(el);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -89,6 +89,19 @@ def test_barre_v040_icones_menu_compte():
|
|||||||
assert "width: 18px" in css
|
assert "width: 18px" in css
|
||||||
|
|
||||||
|
|
||||||
|
def test_barre_v041_correctif_icones_espace_de_noms_svg():
|
||||||
|
"""Barre v0.4.1 (commons, correctif fusion #125) : les icônes
|
||||||
|
du menu compte sont créées via createElementNS (espace de
|
||||||
|
noms SVG). En v0.4.0, createElement() les créait dans
|
||||||
|
l'espace de noms HTML : jamais dessinées par le navigateur,
|
||||||
|
libellés décalés d'un cran d'icône sans aucun glyphe."""
|
||||||
|
js = (ROOT / "static/js/vendor/draco-barre.js").read_text()
|
||||||
|
assert 'createElementNS(SVG_NS, "svg")' in js
|
||||||
|
assert "createElementNS(SVG_NS, spec[0])" in js
|
||||||
|
assert 'createElement("svg")' not in js
|
||||||
|
assert "createElement(spec[0])" not in js
|
||||||
|
|
||||||
|
|
||||||
def test_barre_intacte_apres_suppression():
|
def test_barre_intacte_apres_suppression():
|
||||||
"""Le 5e onglet Console Spark et la marque survivent a la suppression."""
|
"""Le 5e onglet Console Spark et la marque survivent a la suppression."""
|
||||||
gabarit = (ROOT / "app/templates/_draco_bar.html").read_text()
|
gabarit = (ROOT / "app/templates/_draco_bar.html").read_text()
|
||||||
|
|||||||
Reference in New Issue
Block a user