Repousser un projet en bloc, sauf ce dont on ne décide pas
Glisser la barre résumé décale toutes les phases du même nombre de jours, écarts conservés : un projet engagé glisse souvent, et le faire phase par phase les déformait. Restent en place ce qui est terminé — on ne réécrit pas le passé — et les phases à date imposée, nouveau booléen `fixed` pour ce qui est délégué ou tenu du dehors. D'où le format en version 6 : sans l'incrément, un binaire antérieur effacerait ces dates imposées à la première sauvegarde. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -829,6 +829,24 @@ button[aria-pressed="true"] {
|
||||
);
|
||||
}
|
||||
|
||||
/* Une phase dont la date ne nous appartient pas — déléguée, contractuelle,
|
||||
réglementaire (docs/decisions.md, section 28).
|
||||
|
||||
Deux **taquets** verticaux à ses extrémités, comme les butées d'une pièce
|
||||
qu'on ne peut plus faire coulisser. La marque se cumule avec les quatre
|
||||
textures de statut au lieu de leur disputer la place : c'est bien une phase à
|
||||
venir, en cours ou bloquée, qui se trouve en plus tenue par le dehors.
|
||||
|
||||
En `inset`, donc sans toucher à la géométrie : la barre garde exactement la
|
||||
largeur de ses dates, et l'ombre portée reste déclarée à côté — un
|
||||
`box-shadow` ne se cumule pas d'une règle à l'autre, il se remplace. */
|
||||
.barre--imposee {
|
||||
box-shadow:
|
||||
var(--ombre),
|
||||
inset 3px 0 0 var(--texte),
|
||||
inset -3px 0 0 var(--texte);
|
||||
}
|
||||
|
||||
/* Poignées de redimensionnement, révélées au survol de la barre. */
|
||||
.poignee {
|
||||
position: absolute;
|
||||
@@ -884,6 +902,15 @@ button[aria-pressed="true"] {
|
||||
background: var(--danger);
|
||||
}
|
||||
|
||||
/* Un losange n'a pas d'extrémités où poser les taquets d'une barre imposée : il
|
||||
se cercle. Déclarée après `.jalon`, dont elle partage la spécificité — c'est
|
||||
l'ordre qui la fait gagner, un `box-shadow` se remplaçant en bloc. */
|
||||
.jalon--impose {
|
||||
box-shadow:
|
||||
var(--ombre),
|
||||
inset 0 0 0 2px var(--texte);
|
||||
}
|
||||
|
||||
.jalon--selectionne {
|
||||
outline: 2px solid var(--texte);
|
||||
outline-offset: 1px;
|
||||
@@ -907,8 +934,8 @@ button[aria-pressed="true"] {
|
||||
déplié, et rendue à l'identique dans les deux cas — c'est le même objet, il
|
||||
n'a pas à changer d'aspect quand on ouvre le couloir.
|
||||
Volontairement plus mince qu'une barre de phase : elle voisine avec elles
|
||||
dès que le projet est déplié, et ne se glisse pas.
|
||||
Lecture seule : voir docs/decisions.md, section 8. */
|
||||
dès que le projet est déplié.
|
||||
Elle se glisse pour repousser le projet : voir docs/decisions.md, section 8. */
|
||||
.barre-cumulative {
|
||||
position: absolute;
|
||||
top: calc((var(--hauteur-ligne) - var(--hauteur-cumulative)) / 2);
|
||||
@@ -921,6 +948,25 @@ button[aria-pressed="true"] {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
/* La prise ne s'annonce que là où elle mène quelque part : sur un projet dont
|
||||
tout est terminé, la barre n'a pas de rôle et garde le curseur par défaut —
|
||||
rien ne bougerait. */
|
||||
.barre-cumulative[data-role='cumul'] {
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
.barre-cumulative[data-role='cumul']:hover {
|
||||
background: color-mix(in srgb, var(--couleur-projet) 28%, var(--surface));
|
||||
}
|
||||
|
||||
/* Mince comme elle est, une barre cumulative saisie se repère mal. L'ombre la
|
||||
décolle du couloir le temps du geste, sans changer sa géométrie — ce qui
|
||||
décalerait ce qu'on est en train de viser. */
|
||||
.barre-cumulative.barre--glissee {
|
||||
cursor: grabbing;
|
||||
box-shadow: 0 0 0 2px color-mix(in srgb, var(--couleur-projet) 60%, transparent);
|
||||
}
|
||||
|
||||
.segment {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
|
||||
Reference in New Issue
Block a user