import React, { useMemo } from 'react'; import { useTranslation } from 'next-i18next'; import MyIcon from '../Icon'; import { useRequest2 } from '../../../hooks/useRequest'; import { Popover, PopoverTrigger, PopoverContent, useDisclosure, type PlacementWithLogical, HStack, Box, Button, PopoverArrow, Portal } from '@chakra-ui/react'; const PopoverConfirm = ({ content, showCancel = true, type, Trigger, placement = 'auto', offset, onConfirm, confirmText, cancelText }: { content: string; showCancel?: boolean; type?: 'info' | 'delete'; Trigger: React.ReactNode; placement?: PlacementWithLogical; offset?: [number, number]; onConfirm: () => any; confirmText?: string; cancelText?: string; }) => { const { t } = useTranslation(); const map = useMemo(() => { const map = { info: { variant: 'primary', icon: 'common/confirm/commonTip' }, delete: { variant: 'dangerFill', icon: 'common/confirm/deleteTip' } }; if (type && map[type]) return map[type]; return map.info; }, [type]); const firstFieldRef = React.useRef(null); const { onOpen, onClose, isOpen } = useDisclosure(); const { runAsync: onclickConfirm, loading } = useRequest2(onConfirm, { onSuccess: onClose }); return ( {Trigger} {content} {showCancel && ( )} ); }; export default PopoverConfirm;