import { useContext } from 'react'; import { useRecoilValue } from 'recoil'; import { PersonChip } from '@/people/components/PersonChip'; import { ViewFieldDefinition, ViewFieldRelationMetadata, } from '@/ui/editable-field/types/ViewField'; import { Entity } from '@/ui/input/relation-picker/types/EntityTypeForSelect'; import { RelationPickerHotkeyScope } from '@/ui/input/relation-picker/types/RelationPickerHotkeyScope'; import { RecoilScope } from '@/ui/utilities/recoil-scope/components/RecoilScope'; import { EditableFieldEntityIdContext } from '../states/EditableFieldEntityIdContext'; import { FieldContext } from '../states/FieldContext'; import { genericEntityFieldFamilySelector } from '../states/genericEntityFieldFamilySelector'; import { EditableField } from './EditableField'; import { GenericEditableRelationFieldEditMode } from './GenericEditableRelationFieldEditMode'; type OwnProps = { viewField: ViewFieldDefinition; }; function RelationChip({ fieldDefinition, fieldValue, }: { fieldDefinition: ViewFieldDefinition; fieldValue: any | null; }) { switch (fieldDefinition.metadata.relationType) { case Entity.Person: { return ( ); } default: console.warn( `Unknown relation type: "${fieldDefinition.metadata.relationType}" in GenericEditableRelationField`, ); return <> ; } } export function GenericEditableRelationField({ viewField }: OwnProps) { const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext); const fieldValue = useRecoilValue( genericEntityFieldFamilySelector({ entityId: currentEditableFieldEntityId ?? '', fieldName: viewField.metadata.fieldName, }), ); return ( } displayModeContent={ } isDisplayModeContentEmpty={!fieldValue} isDisplayModeFixHeight /> ); }