diff --git a/README.md b/README.md index 6b46060..dd363ae 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ Une fois un projet en place : |---|---| | Glisser le corps d'une barre | Décale la phase, durée conservée | | Glisser le bord d'une barre | Change la date de début ou de fin | +| Glisser le bord gauche du panneau | Change sa largeur (double-clic : d'origine) | | Clic sur une barre ou son nom | Ouvre le panneau de détail | | Clic sur une autre barre, panneau ouvert | Bascule le panneau sur cette phase | | Clic sur un nom de phase hors écran | Ramène la frise sur elle | @@ -132,6 +133,10 @@ décision à quelle date. Elles se lisent aussi au survol du nom du projet dans et celles d'une phase au survol de sa barre : l'infobulle les affiche sans les marques de mise en forme, puces et cases dessinées comprises. +Le **panneau se redimensionne** en glissant son bord gauche, comme la colonne des projets ; un +double-clic revient à la largeur d'origine. Cette largeur est propre au navigateur, elle n'est pas +enregistrée dans le planning. + ### La vue par mois Les deux boutons **Frise** et **Par mois**, en haut à gauche, changent de regard sur les mêmes diff --git a/css/style.css b/css/style.css index cff43be..2bbf8ad 100644 --- a/css/style.css +++ b/css/style.css @@ -31,6 +31,9 @@ /* Doit rester en accord avec `LARGEUR_LIBELLES.defaut` (app.js), sur lequel retombe le double-clic de la poignée. */ --largeur-libelles: 300px; + /* Même règle, pour `LARGEUR_PANNEAU.defaut`. Les deux panneaux la partagent : + ce qu'on élargit est le volet, pas l'un ou l'autre de ses contenus. */ + --largeur-panneau: 380px; --rayon: 6px; --ombre: 0 1px 2px rgb(15 23 42 / 0.08); @@ -814,8 +817,8 @@ button[aria-pressed="true"] { top: 0; right: 0; bottom: 0; - width: 340px; - max-width: 90vw; + width: var(--largeur-panneau); + max-width: 100vw; background: var(--surface); border-left: 1px solid var(--bordure); box-shadow: -4px 0 16px rgb(15 23 42 / 0.12); @@ -824,6 +827,38 @@ button[aria-pressed="true"] { flex-direction: column; } +/* Poignée de largeur, sur le bord gauche. Jumelle de `.poignee-colonne` : même + épaisseur, même trait d'accent au survol, même curseur. Ce qui change est le + bord auquel elle s'accroche, puisque le panneau est ancré à droite. */ +.poignee-panneau { + position: absolute; + top: 0; + bottom: 0; + left: -4px; + width: 9px; + cursor: col-resize; + z-index: 1; +} + +.poignee-panneau::after { + content: ""; + position: absolute; + inset: 0 4px; + background: var(--accent); + opacity: 0; + transition: opacity 0.12s; +} + +.poignee-panneau:hover::after, +.poignee-panneau:focus-visible::after, +.poignee-panneau[data-glisse="true"]::after { + opacity: 1; +} + +.poignee-panneau:focus-visible { + outline: none; +} + /* Le panneau reçoit le focus à l'ouverture pour que le clavier le suive, mais il n'est pas un contrôle : un anneau de focus autour de tout le panneau n'apprendrait rien et attirerait l'œil loin du champ à remplir. */ diff --git a/docs/decisions.md b/docs/decisions.md index 346d567..5f9f17b 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -691,9 +691,18 @@ Une seule écriture y échappe : cocher une case depuis l'aperçu, où le champ pas prendre le focus. Le geste vide donc la pile — sans grande conséquence, puisqu'on n'était pas en train d'y taper. -### Les infobulles s'aplatissent +### Le volet s'élargit, les infobulles s'aplatissent -Les **infobulles** de la frise ne peuvent pas montrer de rendu : l'attribut `title` du +Trois cent quarante pixels suffisaient à des champs de date ; ils ne suffisent pas à une liste +imbriquée, où chaque niveau mange une indentation. Le panneau reçoit donc la **même poignée** que la +colonne des libellés (décision 18) : même geste, même double-clic de remise à zéro, même +mémorisation dans `localStorage` — c'est un réglage d'écran, pas une donnée à synchroniser. Une +largeur unique pour les deux panneaux, parce que ce qu'on élargit est le volet, pas l'un ou l'autre +de ses contenus. Elle est plafonnée à la fenêtre sans être écrasée pour autant : la largeur voulue +et la largeur appliquée sont deux variables distinctes, faute de quoi réduire un instant la fenêtre +ferait perdre le réglage. + +Les **infobulles** de la frise, elles, ne peuvent pas montrer de rendu : l'attribut `title` du navigateur ne connaît que le texte. Les notes y sont donc **aplaties** — marques retirées, et remplacées par un caractère qui porte le même sens là où il y en a un : `•` pour un tiret, `☐` et `☑` pour une case, `│` pour une citation. Sans cela, survoler une barre afficherait la source diff --git a/index.html b/index.html index 517c12d..5807e4d 100644 --- a/index.html +++ b/index.html @@ -106,6 +106,20 @@ flèches piloter la phase sélectionnée. -->