🐛 Fix select input displaying id instead of label on refresh
Closes #1495
This commit is contained in:
@ -15,7 +15,7 @@ import {
|
|||||||
IconButton,
|
IconButton,
|
||||||
HStack,
|
HStack,
|
||||||
} from '@chakra-ui/react'
|
} from '@chakra-ui/react'
|
||||||
import { useState, useRef, ChangeEvent } from 'react'
|
import { useState, useRef, ChangeEvent, useEffect } from 'react'
|
||||||
import { isDefined } from '@typebot.io/lib'
|
import { isDefined } from '@typebot.io/lib'
|
||||||
import { useOutsideClick } from '@/hooks/useOutsideClick'
|
import { useOutsideClick } from '@/hooks/useOutsideClick'
|
||||||
import { useParentModal } from '@/features/graph/providers/ParentModalProvider'
|
import { useParentModal } from '@/features/graph/providers/ParentModalProvider'
|
||||||
@ -23,14 +23,14 @@ import { ChevronDownIcon, CloseIcon } from '../icons'
|
|||||||
|
|
||||||
const dropdownCloseAnimationDuration = 300
|
const dropdownCloseAnimationDuration = 300
|
||||||
|
|
||||||
type Item =
|
type RichItem = {
|
||||||
| string
|
icon?: JSX.Element
|
||||||
| {
|
label: string
|
||||||
icon?: JSX.Element
|
value: string
|
||||||
label: string
|
extras?: Record<string, unknown>
|
||||||
value: string
|
}
|
||||||
extras?: Record<string, unknown>
|
|
||||||
}
|
type Item = string | RichItem
|
||||||
|
|
||||||
type Props<T extends Item> = {
|
type Props<T extends Item> = {
|
||||||
selectedItem?: string
|
selectedItem?: string
|
||||||
@ -59,6 +59,18 @@ export const Select = <T extends Item>({
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!items || typeof items[0] === 'string' || !selectedItem || isTouched)
|
||||||
|
return
|
||||||
|
setInputValue(
|
||||||
|
getItemLabel(
|
||||||
|
(items as readonly RichItem[]).find(
|
||||||
|
(item) => selectedItem === item.value
|
||||||
|
) ?? selectedItem
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}, [isTouched, items, selectedItem])
|
||||||
|
|
||||||
const [keyboardFocusIndex, setKeyboardFocusIndex] = useState<
|
const [keyboardFocusIndex, setKeyboardFocusIndex] = useState<
|
||||||
number | undefined
|
number | undefined
|
||||||
>()
|
>()
|
||||||
|
Reference in New Issue
Block a user