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.
277 lines
4.9 KiB
SCSS
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;
|
|
}
|
|
}
|