feat: Focus automatique sur Net avant PAS dans modal ajout paies en masse

This commit is contained in:
odentas 2025-12-19 18:44:12 +01:00
parent 76a8a0de14
commit 4000883fab

View file

@ -1,7 +1,7 @@
// components/staff/contracts/BulkPayslipModal.tsx
"use client";
import { useState, useMemo, useEffect } from "react";
import { useState, useMemo, useEffect, useRef } from "react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
@ -73,6 +73,9 @@ export default function BulkPayslipModal({ isOpen, onClose, contracts, onSubmit
// État pour les données de chaque contrat
const [payslipsData, setPayslipsData] = useState<Record<string, Partial<PayslipData>>>({});
// Ref pour le premier champ Net avant PAS
const firstNetAmountInputRef = useRef<HTMLInputElement>(null);
// Initialiser les données avec les dates de contrat (une seule fois)
useEffect(() => {
const initialData: Record<string, Partial<PayslipData>> = {};
@ -98,6 +101,16 @@ export default function BulkPayslipModal({ isOpen, onClose, contracts, onSubmit
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []); // Seulement au montage du composant
// Focus automatique sur le premier champ Net avant PAS quand le modal s'ouvre
useEffect(() => {
if (isOpen && firstNetAmountInputRef.current) {
const timer = setTimeout(() => {
firstNetAmountInputRef.current?.focus();
}, 100);
return () => clearTimeout(timer);
}
}, [isOpen]);
// Mettre à jour une valeur pour un contrat spécifique
const updatePayslipData = (contractId: string, field: keyof PayslipData, value: any) => {
setPayslipsData((prev) => ({
@ -349,6 +362,7 @@ export default function BulkPayslipModal({ isOpen, onClose, contracts, onSubmit
<div>
<Label className="text-xs text-slate-700">Net avant PAS</Label>
<Input
ref={index === 0 ? firstNetAmountInputRef : undefined}
type="number"
step="0.01"
value={data.net_amount || ""}