import {
Popover,
PopoverArrow,
PopoverBody,
PopoverCloseButton,
PopoverContent,
PopoverHeader,
PopoverTrigger,
Portal,
Select
} from '@chakra-ui/react'
import {connectField} from '../..'
type Options = string[]
type Option = Options[number] | null
type ChoiceRenderFn = (
selection: Option,
options: Options,
select: (option: Option) => void,
isEditing: boolean
) => JSX.Element
const ChoiceField = connectField<
Option,
Option,
{
displayName?: React.ReactNode
options: Options
render: ChoiceRenderFn
renderPopover: ChoiceRenderFn | null
}
>(
({jaenField, displayName, options, render, renderPopover}) => {
const selection =
jaenField.value || jaenField.staticValue || jaenField.defaultValue
if (!jaenField.isEditing || !renderPopover) {
return render(
selection,
options,
jaenField.onUpdateValue,
jaenField.isEditing
)
}
return (
{render(
selection,
options,
jaenField.onUpdateValue,
jaenField.isEditing
)}
{displayName && {displayName}}
{renderPopover(
selection,
options,
jaenField.onUpdateValue,
jaenField.isEditing
)}
)
},
{
fieldType: 'IMA:ChoiceField',
getAdminWidget: ({field, options}) => {
return (
)
}
}
)
export default ChoiceField