'use client'; import * as React from 'react'; import { useState } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { InputOTP, InputOTPGroup, InputOTPSlot, } from '@/components/ui/input-otp'; import { Button } from '@/components/ui/button'; import { Spinner } from '@/components/ui/spinner'; interface PasswordDialogProps { isOpen: boolean; onOpenChange: (open: boolean) => void; onConfirm: (password: string) => void; loading?: boolean; title?: string; description?: string; } /** * 密码输入对话框 * * 用于敏感操作前的二次确认 */ export function PasswordDialog({ isOpen, onOpenChange, onConfirm, loading = false, title = '请输入密码', description = '为了您的账户安全,请输入6位认证密码进行验证', }: PasswordDialogProps) { const [password, setPassword] = useState(''); const handleConfirm = () => { if (password.length === 6) { onConfirm(password); } }; /* 当对话框关闭时重置密码*/ React.useEffect(() => { if (!isOpen) { setPassword(''); } }, [isOpen]); return ( {title} {description}
{ if (e.key === 'Enter' && password.length === 6 && !loading) { handleConfirm(); } }} >
); }