mirror of
https://github.com/wassname/chatGPTBox.git
synced 2026-06-30 10:13:08 +08:00
55 lines
1.3 KiB
React
55 lines
1.3 KiB
React
import { useEffect, useRef, useState } from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import { useTranslation } from 'react-i18next'
|
|
import { TrashIcon } from '@primer/octicons-react'
|
|
|
|
DeleteButton.propTypes = {
|
|
onConfirm: PropTypes.func.isRequired,
|
|
size: PropTypes.number.isRequired,
|
|
}
|
|
|
|
function DeleteButton({ onConfirm, size }) {
|
|
const { t } = useTranslation()
|
|
const [waitConfirm, setWaitConfirm] = useState(false)
|
|
const confirmRef = useRef(null)
|
|
|
|
useEffect(() => {
|
|
if (waitConfirm) confirmRef.current.focus()
|
|
}, [waitConfirm])
|
|
|
|
return (
|
|
<span>
|
|
<button
|
|
ref={confirmRef}
|
|
type="button"
|
|
className="normal-button"
|
|
style={{
|
|
fontSize: '10px',
|
|
...(waitConfirm ? {} : { display: 'none' }),
|
|
}}
|
|
onBlur={() => {
|
|
setWaitConfirm(false)
|
|
}}
|
|
onClick={() => {
|
|
setWaitConfirm(false)
|
|
onConfirm()
|
|
}}
|
|
>
|
|
{t('Confirm')}
|
|
</button>
|
|
<span
|
|
title={t('Clear Conversation')}
|
|
className="gpt-util-icon"
|
|
style={waitConfirm ? { display: 'none' } : {}}
|
|
onClick={() => {
|
|
setWaitConfirm(true)
|
|
}}
|
|
>
|
|
<TrashIcon size={size} />
|
|
</span>
|
|
</span>
|
|
)
|
|
}
|
|
|
|
export default DeleteButton
|