* Change to using arrow functions Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Add lint rule --------- Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> Co-authored-by: Charles Bochet <charles@twenty.com>
51 lines
2.2 KiB
TypeScript
51 lines
2.2 KiB
TypeScript
import { useContext } from 'react';
|
|
import { useRecoilValue } from 'recoil';
|
|
|
|
import { RelationPickerHotkeyScope } from '@/ui/input/relation-picker/types/RelationPickerHotkeyScope';
|
|
import { RecoilScope } from '@/ui/utilities/recoil-scope/components/RecoilScope';
|
|
|
|
import { EditableFieldDefinitionContext } from '../contexts/EditableFieldDefinitionContext';
|
|
import { EditableFieldEntityIdContext } from '../contexts/EditableFieldEntityIdContext';
|
|
import { FieldRecoilScopeContext } from '../states/recoil-scope-contexts/FieldRecoilScopeContext';
|
|
import { genericEntityFieldFamilySelector } from '../states/selectors/genericEntityFieldFamilySelector';
|
|
import { FieldDefinition } from '../types/FieldDefinition';
|
|
import { FieldRelationMetadata } from '../types/FieldMetadata';
|
|
|
|
import { EditableField } from './EditableField';
|
|
import { GenericEditableRelationFieldDisplayMode } from './GenericEditableRelationFieldDisplayMode';
|
|
import { GenericEditableRelationFieldEditMode } from './GenericEditableRelationFieldEditMode';
|
|
|
|
export const GenericEditableRelationField = () => {
|
|
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
|
const currentEditableFieldDefinition = useContext(
|
|
EditableFieldDefinitionContext,
|
|
) as FieldDefinition<FieldRelationMetadata>;
|
|
|
|
const fieldValue = useRecoilValue<any | null>(
|
|
genericEntityFieldFamilySelector({
|
|
entityId: currentEditableFieldEntityId ?? '',
|
|
fieldName: currentEditableFieldDefinition
|
|
? currentEditableFieldDefinition.metadata.fieldName
|
|
: '',
|
|
}),
|
|
);
|
|
|
|
return (
|
|
<RecoilScope CustomRecoilScopeContext={FieldRecoilScopeContext}>
|
|
<RecoilScope>
|
|
<EditableField
|
|
useEditButton={currentEditableFieldDefinition.metadata.useEditButton}
|
|
customEditHotkeyScope={{
|
|
scope: RelationPickerHotkeyScope.RelationPicker,
|
|
}}
|
|
IconLabel={currentEditableFieldDefinition.Icon}
|
|
editModeContent={<GenericEditableRelationFieldEditMode />}
|
|
displayModeContent={<GenericEditableRelationFieldDisplayMode />}
|
|
isDisplayModeContentEmpty={!fieldValue}
|
|
isDisplayModeFixHeight
|
|
/>
|
|
</RecoilScope>
|
|
</RecoilScope>
|
|
);
|
|
};
|