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