Suppression de la sélection du langage au démarrage de l'appli : maintenant c'est le système qui décide de la langue.
Some checks failed
Tests unitaires / Brain (Python · pytest + couverture) (push) Successful in 20s
Tests unitaires / Web (Angular · vitest + couverture) (push) Successful in 33s
Tests unitaires / Core (Java · mvn test + JaCoCo) (push) Successful in 2m30s
Build & Push Images / build (brain) (push) Successful in 1m22s
E2E Tests / e2e (push) Failing after 5m47s
Build & Push Images / build (core) (push) Successful in 3m29s
Build & Push Images / build-switcher (push) Successful in 48s
Build & Push Images / build (web) (push) Successful in 1m55s
Some checks failed
Tests unitaires / Brain (Python · pytest + couverture) (push) Successful in 20s
Tests unitaires / Web (Angular · vitest + couverture) (push) Successful in 33s
Tests unitaires / Core (Java · mvn test + JaCoCo) (push) Successful in 2m30s
Build & Push Images / build (brain) (push) Successful in 1m22s
E2E Tests / e2e (push) Failing after 5m47s
Build & Push Images / build (core) (push) Successful in 3m29s
Build & Push Images / build-switcher (push) Successful in 48s
Build & Push Images / build (web) (push) Successful in 1m55s
Changement relicat Loremind -> DM Loremind Passage en 0.18.0 stable publique
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
@if (visible) {
|
||||
<div class="flo-overlay" role="dialog" aria-modal="true" aria-label="Language / Langue">
|
||||
<div class="flo-card">
|
||||
<img class="flo-logo" src="assets/logo.png" alt="DM Loremind" />
|
||||
<h2 class="flo-title">Bienvenue · Welcome</h2>
|
||||
<p class="flo-sub">Choisissez votre langue · Choose your language</p>
|
||||
<div class="flo-buttons">
|
||||
@for (opt of options; track opt.code) {
|
||||
<button type="button" class="flo-btn" (click)="choose(opt.code)">
|
||||
<span class="flo-flag">{{ opt.flag }}</span>
|
||||
<span class="flo-native">{{ opt.native }}</span>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
.flo-overlay {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 10000;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 1.5rem;
|
||||
background: rgba(10, 10, 20, 0.82);
|
||||
backdrop-filter: blur(8px);
|
||||
-webkit-backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.flo-card {
|
||||
width: 100%;
|
||||
max-width: 420px;
|
||||
padding: 2.5rem 2rem;
|
||||
text-align: center;
|
||||
background: #12121f;
|
||||
border: 1px solid rgba(108, 99, 255, 0.25);
|
||||
border-radius: 18px;
|
||||
box-shadow: 0 30px 80px -30px rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
|
||||
.flo-logo {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
border-radius: 14px;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.flo-title {
|
||||
margin: 1rem 0 0.3rem;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.flo-sub {
|
||||
margin: 0 0 1.8rem;
|
||||
font-size: 0.95rem;
|
||||
color: #9ca3af;
|
||||
}
|
||||
|
||||
.flo-buttons {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.flo-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.9rem;
|
||||
width: 100%;
|
||||
padding: 0.9rem 1.1rem;
|
||||
font-size: 1.05rem;
|
||||
font-weight: 600;
|
||||
color: #e0e0e0;
|
||||
background: rgba(108, 99, 255, 0.08);
|
||||
border: 1px solid rgba(108, 99, 255, 0.25);
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s, border-color 0.15s, transform 0.12s;
|
||||
}
|
||||
|
||||
.flo-btn:hover {
|
||||
background: rgba(108, 99, 255, 0.18);
|
||||
border-color: rgba(108, 99, 255, 0.5);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.flo-flag {
|
||||
font-size: 1.5rem;
|
||||
line-height: 1;
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
import { Component, inject } from '@angular/core';
|
||||
import { LanguageService } from '../../services/language.service';
|
||||
|
||||
/**
|
||||
* Écran de choix de langue au TOUT PREMIER lancement (overlay one-shot).
|
||||
*
|
||||
* Ne s'affiche que si aucune langue n'a encore été choisie explicitement
|
||||
* (cf. LanguageService.hasExplicitChoice). Le choix est mémorisé en localStorage
|
||||
* via LanguageService.use() → aux lancements suivants l'overlay ne réapparaît pas,
|
||||
* et le sélecteur de langue habituel prend le relais.
|
||||
*
|
||||
* Textes volontairement BILINGUES / neutres (l'utilisateur n'a pas encore choisi).
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-first-run-language',
|
||||
standalone: true,
|
||||
templateUrl: './first-run-language.component.html',
|
||||
styleUrls: ['./first-run-language.component.scss'],
|
||||
})
|
||||
export class FirstRunLanguageComponent {
|
||||
private readonly language = inject(LanguageService);
|
||||
|
||||
visible = !this.language.hasExplicitChoice();
|
||||
|
||||
/** Libellés NATIFs (indépendants de la langue courante). */
|
||||
readonly options: ReadonlyArray<{ code: string; native: string; flag: string }> = [
|
||||
{ code: 'fr', native: 'Français', flag: '🇫🇷' },
|
||||
{ code: 'en', native: 'English', flag: '🇬🇧' },
|
||||
];
|
||||
|
||||
choose(code: string): void {
|
||||
this.language.use(code); // applique + mémorise
|
||||
this.visible = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user