Compare commits

..

14 Commits

Author SHA1 Message Date
eac108c9f4 Merge branch 'master' into develop — alignement avec correctifs master (withOpacity, formatters, script Gitea)
Made-with: Cursor
2026-04-12 21:15:07 +02:00
4dedd9b87a fix(web): withOpacity à la place de withValues (Flutter 3.19 / dart2js)
Made-with: Cursor
2026-04-12 21:11:06 +02:00
518b3f84df Revert "chore(master): alignement post-squash avec develop (téléphone, script Gitea)"
This reverts commit dc04e04598ba407bbe95b0b0412b228f5dee019d.
2026-04-11 18:08:36 +02:00
dc04e04598 chore(master): alignement post-squash avec develop (téléphone, script Gitea)
Made-with: Cursor
2026-04-11 18:08:04 +02:00
fdd1e06e77 [#101] [Frontend] Inscription parent — API, soumission et validation
Squash merge de develop vers master.

Livrables principaux (ticket #101 et mise au point associée) :
- Branchement du formulaire d'inscription parent sur POST /api/v1/auth/register/parent
- Payload DTO (parents, enfants, photos base64, CGU) et services Auth
- Parcours gestionnaire : cartes dossiers, wizard validation famille, images authentifiées
- Scripts d'inscription test (Martin, Durand/Rousseau, Lecomte) ; .gitignore .cursor/

Inclut également les ajustements develop fusionnés dans ce lot (inscription AM, champs relais, etc.).

Closes #101

Made-with: Cursor
2026-04-11 18:07:24 +02:00
cde676c4f9 feat: alignement master sur develop (squash)
- Dossiers unifiés #119, pending-families enrichi, validation admin (wizards)
- Front: modèles dossier_unifie / pending_family, NIR, auth
- Migrations dossier_famille, scripts de test API
- Résolution conflits: parents.*, docs tickets, auth_service, nir_utils

Made-with: Cursor
2026-03-26 00:20:47 +01:00
060e610a75 Merge branch 'develop' (squash) – Reprise après refus #111
Made-with: Cursor
2026-03-12 23:06:04 +01:00
7e32eef0a7 Merge branch 'develop' (squash) – Refus sans suppression #110
Made-with: Cursor
2026-03-12 22:57:45 +01:00
aa4e240ad1 Merge branch 'develop' (squash) – Validation dossier famille #108
Made-with: Cursor
2026-03-12 22:47:41 +01:00
a92447aaf0 Merge branch 'develop' (squash) – Liste familles en attente #106
Made-with: Cursor
2026-03-12 22:37:41 +01:00
94c8a0d97a Merge branch 'develop' (squash) – Statut refusé #105, script Gitea fallback ~/.bashrc
Made-with: Cursor
2026-03-12 22:28:13 +01:00
af489f39b4 Merge branch 'develop' (squash) – Numéro de dossier #103 et autres avancements
Made-with: Cursor
2026-03-12 22:14:21 +01:00
aefe590d2c Squash merge develop into master (câblage inscription AM #91)
Made-with: Cursor
2026-02-26 21:21:17 +01:00
f749484731 test(inscription AM): Préremplissage données de test Marie DUBOIS (squash develop)
Étapes 1 à 3 du formulaire d'inscription AM : données du jeu de test
officiel (03_seed_test_data.sql) au lieu du générateur aléatoire.

Made-with: Cursor
2026-02-26 19:10:58 +01:00
5 changed files with 23 additions and 8 deletions

View File

@ -309,7 +309,7 @@ class _ValidationFamilyWizardState extends State<ValidationFamilyWizard> {
static List<BoxShadow> _enfantCardShadows() => [ static List<BoxShadow> _enfantCardShadows() => [
BoxShadow( BoxShadow(
color: Colors.black.withValues(alpha: 0.06), color: Colors.black.withOpacity(0.06),
blurRadius: 14, blurRadius: 14,
offset: const Offset(0, 4), offset: const Offset(0, 4),
), ),
@ -514,10 +514,10 @@ class _ValidationFamilyWizardState extends State<ValidationFamilyWizard> {
height: height, height: height,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(photoRadius), borderRadius: BorderRadius.circular(photoRadius),
border: Border.all(color: Colors.black.withValues(alpha: 0.08)), border: Border.all(color: Colors.black.withOpacity(0.08)),
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colors.black.withValues(alpha: 0.05), color: Colors.black.withOpacity(0.05),
blurRadius: 6, blurRadius: 6,
offset: const Offset(0, 2), offset: const Offset(0, 2),
), ),

View File

@ -195,9 +195,9 @@ class _ChildCardWidgetState extends State<ChildCardWidget> {
? Colors.purple.shade200 ? Colors.purple.shade200
: (widget.childData.cardColor == CardColorVertical.pink ? Colors.pink.shade200 : Colors.grey.shade200); : (widget.childData.cardColor == CardColorVertical.pink ? Colors.pink.shade200 : Colors.grey.shade200);
final Color initialPhotoShadow = final Color initialPhotoShadow =
Color.alphaBlend(Colors.black.withValues(alpha: 0.22), baseCardColorForShadow); Color.alphaBlend(Colors.black.withOpacity(0.22), baseCardColorForShadow);
final Color hoverPhotoShadow = final Color hoverPhotoShadow =
Color.alphaBlend(Colors.black.withValues(alpha: 0.32), baseCardColorForShadow); Color.alphaBlend(Colors.black.withOpacity(0.32), baseCardColorForShadow);
final double photoSide = 200.0 * (config.isMobile ? 0.8 : 1.0); final double photoSide = 200.0 * (config.isMobile ? 0.8 : 1.0);
final double editableCardWidth = config.isMobile final double editableCardWidth = config.isMobile
@ -722,7 +722,7 @@ class _ChildCardWidgetState extends State<ChildCardWidget> {
style: OutlinedButton.styleFrom( style: OutlinedButton.styleFrom(
padding: EdgeInsets.symmetric(vertical: padV), padding: EdgeInsets.symmetric(vertical: padV),
visualDensity: VisualDensity.compact, visualDensity: VisualDensity.compact,
backgroundColor: on ? Colors.black.withValues(alpha: 0.08) : Colors.transparent, backgroundColor: on ? Colors.black.withOpacity(0.08) : Colors.transparent,
foregroundColor: Colors.black87, foregroundColor: Colors.black87,
side: BorderSide( side: BorderSide(
width: on ? 2 : 1, width: on ? 2 : 1,

View File

@ -89,7 +89,7 @@ class _CustomAppTextFieldState extends State<CustomAppTextField> {
final Color labelColor = final Color labelColor =
widget.enabled ? Colors.black87 : Colors.grey; widget.enabled ? Colors.black87 : Colors.grey;
final Color hintColor = widget.enabled final Color hintColor = widget.enabled
? Colors.black54.withValues(alpha: 0.7) ? Colors.black54.withOpacity(0.7)
: Colors.grey; : Colors.grey;
return Column( return Column(

View File

@ -1254,6 +1254,12 @@ class _PersonalInfoFormScreenState extends State<PersonalInfoFormScreen> {
} }
} }
static final _phoneInputFormatters = [
FilteringTextInputFormatter.digitsOnly,
LengthLimitingTextInputFormatter(10),
FrenchPhoneNumberFormatter(),
];
/// Retourne l'asset de carte vertical correspondant à la couleur /// Retourne l'asset de carte vertical correspondant à la couleur
String _getVerticalCardAsset() { String _getVerticalCardAsset() {
switch (widget.cardColor) { switch (widget.cardColor) {

View File

@ -15,9 +15,18 @@ if [ -z "$GITEA_TOKEN" ]; then
GITEA_TOKEN=$(cat .gitea-token) GITEA_TOKEN=$(cat .gitea-token)
fi fi
fi fi
if [ -z "$GITEA_TOKEN" ] && [ -f ~/.bashrc ]; then
eval "$(grep '^export GITEA_TOKEN=' ~/.bashrc 2>/dev/null)" || true
fi
if [ -z "$GITEA_TOKEN" ] && [ -f docs/BRIEFING-FRONTEND.md ]; then
token_from_briefing=$(sed -n 's/.*Token: *\(giteabu_[a-f0-9]*\).*/\1/p' docs/BRIEFING-FRONTEND.md 2>/dev/null | head -1)
if [ -n "$token_from_briefing" ]; then
GITEA_TOKEN="$token_from_briefing"
fi
fi
if [ -z "$GITEA_TOKEN" ]; then if [ -z "$GITEA_TOKEN" ]; then
echo "Définir GITEA_TOKEN ou créer .gitea-token avec votre token Gitea." echo "Définir GITEA_TOKEN ou créer .gitea-token avec votre token Gitea (voir docs/PROCEDURE-API-GITEA.md)."
exit 1 exit 1
fi fi