feat: Focus automatique sur Net avant PAS dans modal ajout paies en masse
This commit is contained in:
parent
76a8a0de14
commit
4000883fab
1 changed files with 15 additions and 1 deletions
|
|
@ -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 || ""}
|
||||
|
|
|
|||
Loading…
Reference in a new issue