feat(MessageMenubar): Automatically hide tooltip when secondary popups appear

- Introduced state management for tooltips related to regenerate and delete actions in the MessageMenubar component.
- Updated Tooltip components to control visibility based on user interactions.
This commit is contained in:
ousugo 2025-03-21 15:16:37 +08:00 committed by 亢奋猫
parent 0c2cffba4c
commit e4e34aacac

View File

@ -54,6 +54,8 @@ const MessageMenubar: FC<Props> = (props) => {
const { t } = useTranslation() const { t } = useTranslation()
const [copied, setCopied] = useState(false) const [copied, setCopied] = useState(false)
const [isTranslating, setIsTranslating] = useState(false) const [isTranslating, setIsTranslating] = useState(false)
const [showRegenerateTooltip, setShowRegenerateTooltip] = useState(false)
const [showDeleteTooltip, setShowDeleteTooltip] = useState(false)
const assistantModel = assistant?.model const assistantModel = assistant?.model
const { const {
loading, loading,
@ -290,10 +292,14 @@ const MessageMenubar: FC<Props> = (props) => {
<Popconfirm <Popconfirm
title={t('message.regenerate.confirm')} title={t('message.regenerate.confirm')}
okButtonProps={{ danger: true }} okButtonProps={{ danger: true }}
destroyTooltipOnHide
icon={<QuestionCircleOutlined style={{ color: 'red' }} />} icon={<QuestionCircleOutlined style={{ color: 'red' }} />}
onConfirm={onRegenerate}> onConfirm={onRegenerate}
<Tooltip title={t('common.regenerate')} mouseEnterDelay={0.8}> onOpenChange={(open) => open && setShowRegenerateTooltip(false)}>
<Tooltip
title={t('common.regenerate')}
mouseEnterDelay={0.8}
open={showRegenerateTooltip}
onOpenChange={setShowRegenerateTooltip}>
<ActionButton className="message-action-button"> <ActionButton className="message-action-button">
<SyncOutlined /> <SyncOutlined />
</ActionButton> </ActionButton>
@ -345,9 +351,14 @@ const MessageMenubar: FC<Props> = (props) => {
title={t('message.message.delete.content')} title={t('message.message.delete.content')}
okButtonProps={{ danger: true }} okButtonProps={{ danger: true }}
icon={<QuestionCircleOutlined style={{ color: 'red' }} />} icon={<QuestionCircleOutlined style={{ color: 'red' }} />}
onOpenChange={(open) => open && setShowDeleteTooltip(false)}
onConfirm={() => deleteMessage(message)}> onConfirm={() => deleteMessage(message)}>
<ActionButton className="message-action-button" onClick={(e) => e.stopPropagation()}> <ActionButton className="message-action-button" onClick={(e) => e.stopPropagation()}>
<Tooltip title={t('common.delete')} mouseEnterDelay={1}> <Tooltip
title={t('common.delete')}
mouseEnterDelay={1}
open={showDeleteTooltip}
onOpenChange={setShowDeleteTooltip}>
<DeleteOutlined /> <DeleteOutlined />
</Tooltip> </Tooltip>
</ActionButton> </ActionButton>