import React from "react"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Form } from "@/components/ui/form"; import { Button } from "@/components/ui/button"; import { ScrollArea } from "@/components/ui/scroll-area"; import { UseFormReturn } from "react-hook-form"; import { User } from "@/services/userService"; import { Loader2, AlertCircle } from "lucide-react"; import { Alert, AlertDescription } from "@/components/ui/alert"; import UserTextField from "./form-fields/UserTextField"; import UserToggleField from "./form-fields/UserToggleField"; import UserRoleField from "./form-fields/UserRoleField"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; interface EditUserDialogProps { isOpen: boolean; setIsOpen: (open: boolean) => void; form: UseFormReturn; user: User | null; onSubmit: (data: any) => void; onImpersonate: (data: any) => void; isSubmitting?: boolean; error?: string | null; } const EditUserDialog = ({ isOpen, setIsOpen, form, user, onSubmit, onImpersonate, isSubmitting = false, error = null }: EditUserDialogProps) => { if (!user) return null; const [impersonationDurationSeconds, setImpersonationDurationSeconds] = React.useState(3600); const handleImpersonateClick = () => { // Impersonation should not depend on edit form validation. onImpersonate({ user, durationSeconds: impersonationDurationSeconds }); }; return ( Edit User Update user information
{error && ( {error} )}
{/* Impersonation settings are not part of the form to avoid validation */}
setImpersonationDurationSeconds(Number(e.target.value || 0))} />

Default is 3600 (1 hour). Minimum 60 seconds.

); }; export default EditUserDialog;