mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-04 20:00:00 +08:00
feat: Enhance assistant emoji and popup UI interactions
This commit is contained in:
parent
3874a1ee5d
commit
8f4868af01
@ -123,6 +123,7 @@ const PopupContainer: React.FC<Props> = ({ resolve }) => {
|
|||||||
maskClosable={false}
|
maskClosable={false}
|
||||||
afterClose={onClose}
|
afterClose={onClose}
|
||||||
okText={t('agents.add.title')}
|
okText={t('agents.add.title')}
|
||||||
|
width={800}
|
||||||
centered>
|
centered>
|
||||||
<Form
|
<Form
|
||||||
ref={formRef}
|
ref={formRef}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import 'emoji-picker-element'
|
import 'emoji-picker-element'
|
||||||
|
|
||||||
|
import { CloseCircleFilled } from '@ant-design/icons'
|
||||||
import EmojiPicker from '@renderer/components/EmojiPicker'
|
import EmojiPicker from '@renderer/components/EmojiPicker'
|
||||||
import { Box, HStack } from '@renderer/components/Layout'
|
import { Box, HStack } from '@renderer/components/Layout'
|
||||||
import { Assistant, AssistantSettings } from '@renderer/types'
|
import { Assistant, AssistantSettings } from '@renderer/types'
|
||||||
@ -18,7 +19,7 @@ interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant, onOk }) => {
|
const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant, onOk }) => {
|
||||||
const [emoji, setEmoji] = useState(getLeadingEmoji(assistant.name) || '⭐️')
|
const [emoji, setEmoji] = useState(getLeadingEmoji(assistant.name) || assistant.emoji)
|
||||||
const [name, setName] = useState(assistant.name.replace(getLeadingEmoji(assistant.name) || '', '').trim())
|
const [name, setName] = useState(assistant.name.replace(getLeadingEmoji(assistant.name) || '', '').trim())
|
||||||
const [prompt, setPrompt] = useState(assistant.prompt)
|
const [prompt, setPrompt] = useState(assistant.prompt)
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
@ -34,6 +35,12 @@ const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant,
|
|||||||
updateAssistant(_assistant)
|
updateAssistant(_assistant)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleEmojiDelete = () => {
|
||||||
|
setEmoji('')
|
||||||
|
const _assistant = { ...assistant, name: name.trim(), prompt, emoji: undefined }
|
||||||
|
updateAssistant(_assistant)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
<Box mb={8} style={{ fontWeight: 'bold' }}>
|
<Box mb={8} style={{ fontWeight: 'bold' }}>
|
||||||
@ -41,7 +48,27 @@ const AssistantPromptSettings: React.FC<Props> = ({ assistant, updateAssistant,
|
|||||||
</Box>
|
</Box>
|
||||||
<HStack gap={8} alignItems="center">
|
<HStack gap={8} alignItems="center">
|
||||||
<Popover content={<EmojiPicker onEmojiClick={handleEmojiSelect} />} arrow>
|
<Popover content={<EmojiPicker onEmojiClick={handleEmojiSelect} />} arrow>
|
||||||
<Button style={{ fontSize: 20, padding: '4px 8px', minWidth: '42px', height: '32px' }}>{emoji}</Button>
|
<EmojiButtonWrapper>
|
||||||
|
<Button style={{ fontSize: 20, padding: '4px', minWidth: '32px', height: '32px' }}>{emoji}</Button>
|
||||||
|
{emoji && (
|
||||||
|
<CloseCircleFilled
|
||||||
|
className="delete-icon"
|
||||||
|
onClick={(e) => {
|
||||||
|
e.stopPropagation()
|
||||||
|
handleEmojiDelete()
|
||||||
|
}}
|
||||||
|
style={{
|
||||||
|
display: 'none',
|
||||||
|
position: 'absolute',
|
||||||
|
top: '-8px',
|
||||||
|
right: '-8px',
|
||||||
|
fontSize: '16px',
|
||||||
|
color: '#ff4d4f',
|
||||||
|
cursor: 'pointer'
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</EmojiButtonWrapper>
|
||||||
</Popover>
|
</Popover>
|
||||||
<Input
|
<Input
|
||||||
placeholder={t('common.assistant') + t('common.name')}
|
placeholder={t('common.assistant') + t('common.name')}
|
||||||
@ -80,4 +107,13 @@ const Container = styled.div`
|
|||||||
padding: 5px;
|
padding: 5px;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const EmojiButtonWrapper = styled.div`
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
&:hover .delete-icon {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
export default AssistantPromptSettings
|
export default AssistantPromptSettings
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user