Squash depuis develop : POST /assistantes-maternelles/dossier (actif + mail MDP), AmDossierWizard create/review, validations inscription. Co-authored-by: Cursor <cursoragent@cursor.com>
93 lines
2.8 KiB
Dart
93 lines
2.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:p_tits_pas/widgets/admin/am_dossier_wizard.dart';
|
|
|
|
/// Modale de création dossier AM (#156) — même shell que [ValidationDossierModal].
|
|
class AmDossierCreateModal extends StatefulWidget {
|
|
final VoidCallback onClose;
|
|
final VoidCallback? onSuccess;
|
|
|
|
const AmDossierCreateModal({
|
|
super.key,
|
|
required this.onClose,
|
|
this.onSuccess,
|
|
});
|
|
|
|
@override
|
|
State<AmDossierCreateModal> createState() => _AmDossierCreateModalState();
|
|
}
|
|
|
|
class _AmDossierCreateModalState extends State<AmDossierCreateModal> {
|
|
int? _stepIndex;
|
|
int? _stepTotal;
|
|
|
|
void _onStepChanged(int step, int total) {
|
|
if (!mounted) return;
|
|
setState(() {
|
|
_stepIndex = step;
|
|
_stepTotal = total;
|
|
});
|
|
}
|
|
|
|
void _onSuccess() {
|
|
widget.onSuccess?.call();
|
|
}
|
|
|
|
static const double _modalWidth = 930;
|
|
/// Hauteur calculée depuis 4 lignes de TF (voir [AmDossierWizard.shellBodyHeight]).
|
|
static double get _bodyHeight => AmDossierWizard.shellBodyHeight;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final maxH = MediaQuery.of(context).size.height * 0.85;
|
|
final showStep =
|
|
_stepIndex != null && _stepTotal != null && (_stepTotal ?? 0) > 0;
|
|
return Dialog(
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
|
|
child: ConstrainedBox(
|
|
constraints: BoxConstraints(maxWidth: _modalWidth, maxHeight: maxH),
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
Row(
|
|
children: [
|
|
const Padding(
|
|
padding: EdgeInsets.fromLTRB(18, 18, 0, 12),
|
|
child: Text(
|
|
'Nouvelle assistante maternelle',
|
|
style: TextStyle(fontSize: 18, fontWeight: FontWeight.w700),
|
|
),
|
|
),
|
|
const Spacer(),
|
|
if (showStep) ...[
|
|
Text(
|
|
'Étape ${(_stepIndex ?? 0) + 1}/${_stepTotal ?? 1}',
|
|
style: Theme.of(context).textTheme.titleSmall?.copyWith(
|
|
color: Colors.black54,
|
|
fontStyle: FontStyle.italic,
|
|
),
|
|
),
|
|
const SizedBox(width: 8),
|
|
],
|
|
IconButton(
|
|
icon: const Icon(Icons.close),
|
|
onPressed: widget.onClose,
|
|
tooltip: 'Fermer',
|
|
),
|
|
],
|
|
),
|
|
const Divider(height: 1),
|
|
SizedBox(
|
|
height: _bodyHeight,
|
|
child: AmDossierWizard.create(
|
|
onClose: widget.onClose,
|
|
onSuccess: _onSuccess,
|
|
onStepChanged: _onStepChanged,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|