import React, { useMemo } from 'react'; import { useTranslation } from 'next-i18next'; import MyIcon from '../Icon'; import { useRequest2 } from '../../../hooks/useRequest'; import { Popover, PopoverTrigger, PopoverContent, useDisclosure, PlacementWithLogical, HStack, Box, Button, PopoverArrow } from '@chakra-ui/react'; const PopoverConfirm = ({ content, showCancel, type, Trigger, placement = 'bottom-start', offset, onConfirm }: { content: string; showCancel?: boolean; type?: 'info' | 'delete'; Trigger: React.ReactNode; placement?: PlacementWithLogical; offset?: [number, number]; onConfirm: () => any; }) => { 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, t]); 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;