* Added generic relation cell * Deactivated debug * Added default warning * Put back display component * Removed unused types
69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { useRecoilState } from 'recoil';
|
|
|
|
import { CompanyPickerCell } from '@/companies/components/CompanyPickerCell';
|
|
import { useUpdateEntityField } from '@/people/hooks/useUpdateEntityField';
|
|
import { EntityForSelect } from '@/ui/relation-picker/types/EntityForSelect';
|
|
import { Entity } from '@/ui/relation-picker/types/EntityTypeForSelect';
|
|
import { useEditableCell } from '@/ui/table/editable-cell/hooks/useEditableCell';
|
|
import { useCurrentRowEntityId } from '@/ui/table/hooks/useCurrentEntityId';
|
|
import { tableEntityFieldFamilySelector } from '@/ui/table/states/tableEntityFieldFamilySelector';
|
|
import { EntityFieldMetadata } from '@/ui/table/types/EntityFieldMetadata';
|
|
|
|
type OwnProps = {
|
|
fieldMetadata: EntityFieldMetadata;
|
|
};
|
|
|
|
export function GenericEditableRelationCellEditMode({
|
|
fieldMetadata,
|
|
}: OwnProps) {
|
|
const currentRowEntityId = useCurrentRowEntityId();
|
|
|
|
const { closeEditableCell } = useEditableCell();
|
|
|
|
const [fieldValueEntity] = useRecoilState<any | null>(
|
|
tableEntityFieldFamilySelector({
|
|
entityId: currentRowEntityId ?? '',
|
|
fieldName: fieldMetadata.fieldName,
|
|
}),
|
|
);
|
|
|
|
const updateEntityField = useUpdateEntityField();
|
|
|
|
function handleEntitySubmit(newFieldEntity: EntityForSelect | null) {
|
|
if (
|
|
newFieldEntity?.id !== fieldValueEntity?.id &&
|
|
currentRowEntityId &&
|
|
updateEntityField
|
|
) {
|
|
updateEntityField(
|
|
currentRowEntityId,
|
|
fieldMetadata.fieldName,
|
|
newFieldEntity,
|
|
);
|
|
}
|
|
|
|
closeEditableCell();
|
|
}
|
|
|
|
function handleCancel() {
|
|
closeEditableCell();
|
|
}
|
|
|
|
switch (fieldMetadata.relationType) {
|
|
case Entity.Company: {
|
|
return (
|
|
<CompanyPickerCell
|
|
companyId={fieldValueEntity?.id ?? null}
|
|
onSubmit={handleEntitySubmit}
|
|
onCancel={handleCancel}
|
|
/>
|
|
);
|
|
}
|
|
default:
|
|
console.warn(
|
|
`Unknown relation type: "${fieldMetadata.relationType}" in GenericEditableRelationCellEditMode`,
|
|
);
|
|
return <></>;
|
|
}
|
|
}
|