Files
SchotzIAD/frontend/src/app/features/trajet-list/trajet-list.component.scss
T
MadJax 058481c192 Liste : jour de semaine dans l'en-tête + bouton dédié d'ajout par journée
Retour d'usage : avec plusieurs journées ouvertes, viser le bouton principal
d'ajout en traversant la liste faisait dériver la date ciblée (le survol pilote
la journée affichée sur la carte).

- En-tête de journée réorganisé : jour de la semaine avant la date (ex. « Lundi
  15/09/2026 »), nombre de trajets à la suite, puis un bouton dédié « + » à
  l'extrémité droite (infobulle « Ajouter un trajet sur cette journée »).
- Le bouton « + » ouvre la création avec la date de SA journée, indépendamment
  de la date affichée sur la carte (Output ajouterSurJournee -> conteneur fixe
  lun. 21 sept. 2026 12:54:31 CEST avant ouverture via ouvrirCreationSur). stopPropagation pour ne pas
  déclencher le repliage/dépliage au clic.
- Style : fond bleu IAD / texte blanc par défaut, survol orange (cohérent avec
  les autres boutons d'action).
- Locale française enregistrée (registerLocaleData(localeFr) + LOCALE_ID
  'fr-FR' dans app.config.ts) pour l'affichage du jour de la semaine.

Specs : requirements.md (exigence 12, critères 6 et 24) et design.md
(TrajetListComponent, locale) mis à jour.
2026-09-21 12:54:31 +02:00

277 lines
4.9 KiB
SCSS

.liste-vide {
margin: 0;
padding: 1.5rem;
text-align: center;
color: #6b7280;
font-style: italic;
}
// Groupe d'une journée : en-tête de date + sa liste de trajets.
.jour {
padding: 0.5rem 0;
// Conteneur de l'en-tête : le bouton de repliage (zone cliquable principale) et,
// à droite, le bouton dédié « + » (ajouter un trajet sur cette journée).
&__entete {
display: flex;
align-items: stretch;
gap: 0.5rem;
width: 100%;
margin: 0 0 0.4rem;
font-size: 0.85rem;
font-weight: 700;
color: #334155;
background: #f1f5f9;
border: 1px solid #e2e8f0;
border-radius: 6px;
position: sticky;
top: 0;
z-index: 1;
}
&__entete-bouton {
display: flex;
align-items: center;
gap: 0.5rem;
flex: 1 1 auto;
min-width: 0;
padding: 0.4rem 0.5rem;
border: none;
background: transparent;
color: inherit;
font: inherit;
text-align: left;
cursor: pointer;
border-radius: 6px 0 0 6px;
&:hover {
background: #e9eef4;
}
}
// Bouton dédié : ajouter un trajet SUR CETTE JOURNÉE, indépendant de la date de
// la carte (pilotée par le survol). Toujours visible, à droite de l'en-tête.
&__ajouter {
flex: 0 0 auto;
width: 2rem;
margin: 0.25rem 0.25rem 0.25rem 0;
border: none;
border-radius: 4px;
background: var(--couleur-bleu, #1976d2);
color: #fff;
font-size: 1.1rem;
font-weight: 700;
line-height: 1;
cursor: pointer;
&:hover {
background: var(--couleur-orange, #f28c28);
}
}
// Journée affichée sur la carte : en-tête accentué (bleu) pour la repérer.
&--affiche &__entete {
background: #e3f0ff;
border-color: #90c2ff;
color: #0d47a1;
box-shadow: inset 3px 0 0 #1976d2;
}
&__chevron {
flex: 0 0 auto;
color: #64748b;
font-size: 0.75rem;
}
&__date {
flex: 1 1 auto;
}
&__compteur {
flex: 0 0 auto;
font-weight: 500;
font-size: 0.75rem;
color: #64748b;
}
& + .jour {
border-top: 1px solid #eef1f4;
}
}
.trajets {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.trajet {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.65rem 0.75rem;
border: 1px solid #e2e6ea;
border-radius: 8px;
background: #fff;
&.cdk-drag-preview {
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
}
&.cdk-drag-placeholder {
opacity: 0.4;
}
&__infos {
flex: 1 1 auto;
min-width: 0;
display: flex;
flex-direction: column;
gap: 0.2rem;
}
&__ligne {
display: flex;
align-items: center;
gap: 0.5rem;
}
&__date {
font-weight: 600;
font-size: 0.85rem;
color: #475569;
}
&__commentaire {
font-size: 0.78rem;
color: #6b7280;
font-style: italic;
line-height: 1.3;
word-break: break-word;
}
&__adresses {
display: flex;
align-items: center;
gap: 0.4rem;
flex-wrap: wrap;
// Adresses en taille réduite (secondaires par rapport à la date/commentaire).
font-size: 0.8rem;
color: #334155;
}
&__fleche {
color: #94a3b8;
}
&__distance {
flex: 0 0 auto;
font-weight: 600;
color: #1f2937;
white-space: nowrap;
text-align: right;
}
// Colonne dédiée A/R en début de ligne (largeur fixe) : maintient l'alignement
// des dates/adresses, qu'un trajet soit aller/retour ou non.
&__ar-col {
flex: 0 0 2.4rem;
display: flex;
align-items: center;
justify-content: center;
}
// Badge « A/R » discret.
&__ar {
display: inline-block;
padding: 0 0.35rem;
font-size: 0.68rem;
font-weight: 700;
line-height: 1.4;
color: #1565c0;
background: #e3f2fd;
border: 1px solid #90caf9;
border-radius: 4px;
}
&__actions {
flex: 0 0 auto;
display: flex;
flex-direction: column;
gap: 0.4rem;
align-items: flex-end;
}
&__actions-ligne {
display: flex;
gap: 0.4rem;
justify-content: flex-end;
}
}
.cdk-drag-animating {
transition: transform 200ms cubic-bezier(0, 0, 0.2, 1);
}
.poignee {
flex: 0 0 auto;
border: none;
background: transparent;
color: #94a3b8;
font-size: 1.1rem;
cursor: grab;
padding: 0.25rem;
&:active {
cursor: grabbing;
}
&:disabled {
cursor: not-allowed;
opacity: 0.5;
}
}
.action {
padding: 0.35rem 0.65rem;
border: 1px solid #c4c9d1;
border-radius: 6px;
background: #fff;
color: #33475b;
font-size: 0.8rem;
cursor: pointer;
&:hover:not(:disabled) {
background: #f3f5f8;
}
&:disabled {
opacity: 0.6;
cursor: not-allowed;
}
&--danger {
border-color: #e3a3a5;
color: #d13438;
&:hover:not(:disabled) {
background: #fdecec;
}
}
&--icone {
display: inline-flex;
align-items: center;
justify-content: center;
width: 2rem;
height: 2rem;
padding: 0;
font-size: 1rem;
line-height: 1;
}
}