Merge pull request #6211 from cmppoon/dev

fix: emoji picker remains stuck in the open state in AddEditAssistant component
This commit is contained in:
Louis 2025-08-21 12:16:09 +07:00 committed by GitHub
commit 6c44ec558d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -61,15 +61,18 @@ export default function AddEditAssistant({
const [paramsTypes, setParamsTypes] = useState<string[]>(['string']) const [paramsTypes, setParamsTypes] = useState<string[]>(['string'])
const [showEmojiPicker, setShowEmojiPicker] = useState(false) const [showEmojiPicker, setShowEmojiPicker] = useState(false)
const emojiPickerRef = useRef<HTMLDivElement>(null) const emojiPickerRef = useRef<HTMLDivElement>(null)
const emojiPickerTriggerRef = useRef<HTMLDivElement>(null)
const [nameError, setNameError] = useState<string | null>(null) const [nameError, setNameError] = useState<string | null>(null)
const [toolSteps, setToolSteps] = useState(20) const [toolSteps, setToolSteps] = useState(20)
// Handle click outside emoji picker // Handle click outside emoji picker or trigger
useEffect(() => { useEffect(() => {
const handleClickOutside = (event: MouseEvent) => { const handleClickOutside = (event: MouseEvent) => {
if ( if (
emojiPickerRef.current && emojiPickerRef.current &&
!emojiPickerRef.current.contains(event.target as Node) emojiPickerTriggerRef.current &&
!emojiPickerRef.current.contains(event.target as Node) &&
!emojiPickerTriggerRef.current.contains(event.target as Node)
) { ) {
setShowEmojiPicker(false) setShowEmojiPicker(false)
} }
@ -91,7 +94,9 @@ export default function AddEditAssistant({
setName(initialData.name) setName(initialData.name)
setDescription(initialData.description) setDescription(initialData.description)
setInstructions(initialData.instructions) setInstructions(initialData.instructions)
setShowEmojiPicker(false)
setToolSteps(initialData.tool_steps ?? 20) setToolSteps(initialData.tool_steps ?? 20)
// Convert parameters object to arrays of keys and values // Convert parameters object to arrays of keys and values
const keys = Object.keys(initialData.parameters || {}) const keys = Object.keys(initialData.parameters || {})
const values = Object.values(initialData.parameters || {}) const values = Object.values(initialData.parameters || {})
@ -122,6 +127,7 @@ export default function AddEditAssistant({
setParamsValues(['']) setParamsValues([''])
setParamsTypes(['string']) setParamsTypes(['string'])
setNameError(null) setNameError(null)
setShowEmojiPicker(false)
setToolSteps(20) setToolSteps(20)
} }
@ -247,6 +253,7 @@ export default function AddEditAssistant({
<div <div
className="border rounded-sm p-1 w-9 h-9 flex items-center justify-center border-main-view-fg/10 cursor-pointer" className="border rounded-sm p-1 w-9 h-9 flex items-center justify-center border-main-view-fg/10 cursor-pointer"
onClick={() => setShowEmojiPicker(!showEmojiPicker)} onClick={() => setShowEmojiPicker(!showEmojiPicker)}
ref={emojiPickerTriggerRef}
> >
{avatar ? ( {avatar ? (
<AvatarEmoji <AvatarEmoji