merge: incorporate main's safearea/auto-order/vacaciones fixes
This commit is contained in:
@@ -842,10 +842,38 @@ class _EditorVacacionesSheetState extends State<_EditorVacacionesSheet> {
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
FilledButton.icon(
|
||||
onPressed: _guardar,
|
||||
icon: const Icon(Icons.check_rounded),
|
||||
label: Text(l10n.saveRangeAction),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: FilledButton.icon(
|
||||
onPressed: _guardar,
|
||||
icon: const Icon(Icons.check_rounded),
|
||||
label: Text(l10n.saveRangeAction),
|
||||
),
|
||||
),
|
||||
// Fix `vacaciones-delete`: only when EDITING an existing
|
||||
// range (never when creating one -- there is nothing to
|
||||
// delete yet). Reuses the exact same confirmation dialog
|
||||
// (`_confirmarEliminarRango`) and deletion method
|
||||
// (`eliminarRangoVacaciones`) the swipe-to-delete gesture
|
||||
// already uses on both `_HeroRangoActivo` and
|
||||
// `_TarjetaRangoVacaciones` -- no new deletion path.
|
||||
if (widget.rango != null) ...[
|
||||
const SizedBox(width: 10),
|
||||
OutlinedButton.icon(
|
||||
key: const ValueKey('vacation-delete-button'),
|
||||
style: OutlinedButton.styleFrom(
|
||||
foregroundColor: Theme.of(context).colorScheme.error,
|
||||
side: BorderSide(
|
||||
color: Theme.of(context).colorScheme.error,
|
||||
),
|
||||
),
|
||||
onPressed: _eliminar,
|
||||
icon: const Icon(Icons.delete_outline_rounded),
|
||||
label: Text(l10n.deleteAction),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -903,6 +931,21 @@ class _EditorVacacionesSheetState extends State<_EditorVacacionesSheet> {
|
||||
}
|
||||
if (mounted) Navigator.pop(context);
|
||||
}
|
||||
|
||||
/// Fix `vacaciones-delete`: mirrors `_guardar`'s pop-on-success shape,
|
||||
/// but confirms first (via the same `_confirmarEliminarRango` dialog the
|
||||
/// swipe gesture uses) and calls `eliminarRangoVacaciones` instead of
|
||||
/// saving. Only reachable when [widget.rango] is non-null (the delete
|
||||
/// button itself is hidden otherwise).
|
||||
Future<void> _eliminar() async {
|
||||
final rango = widget.rango;
|
||||
if (rango == null) return;
|
||||
final l10n = AppLocalizations.of(context);
|
||||
final confirmado = await _confirmarEliminarRango(context, l10n);
|
||||
if (!confirmado || !mounted) return;
|
||||
await context.read<EstadoAlarmas>().eliminarRangoVacaciones(rango.id);
|
||||
if (mounted) Navigator.pop(context);
|
||||
}
|
||||
}
|
||||
|
||||
class _PickerButton extends StatelessWidget {
|
||||
|
||||
Reference in New Issue
Block a user