Add FieldDefinition (#1162)
* add fieldDefinition * update naming * use a unique contextProvider for editable fields * remove EntityUpdateMutationHookContext.Provider usage in CompanyBoardCard * add fieldDefinitionState * remove unnecessary refetchQueries to avoid re-render * add FieldMetadata * add type guards and update useUpdateGenericEntityField * restore refetchQueries
This commit is contained in:
@ -1,28 +1,26 @@
|
||||
import { useContext } from 'react';
|
||||
import { useRecoilState } from 'recoil';
|
||||
|
||||
import {
|
||||
ViewFieldDateMetadata,
|
||||
ViewFieldDefinition,
|
||||
} from '@/ui/editable-field/types/ViewField';
|
||||
|
||||
import { useUpdateGenericEntityField } from '../hooks/useUpdateGenericEntityField';
|
||||
import { EditableFieldEntityIdContext } from '../states/EditableFieldEntityIdContext';
|
||||
import { EditableFieldContext } from '../states/EditableFieldContext';
|
||||
import { genericEntityFieldFamilySelector } from '../states/genericEntityFieldFamilySelector';
|
||||
import { FieldDefinition } from '../types/FieldDefinition';
|
||||
import { FieldDateMetadata } from '../types/FieldMetadata';
|
||||
import { EditableFieldEditModeDate } from '../variants/components/EditableFieldEditModeDate';
|
||||
|
||||
type OwnProps = {
|
||||
viewField: ViewFieldDefinition<ViewFieldDateMetadata>;
|
||||
};
|
||||
|
||||
export function GenericEditableDateFieldEditMode({ viewField }: OwnProps) {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
export function GenericEditableDateFieldEditMode() {
|
||||
const currentEditableField = useContext(EditableFieldContext);
|
||||
const currentEditableFieldEntityId = currentEditableField.entityId;
|
||||
const currentEditableFieldDefinition =
|
||||
currentEditableField.fieldDefinition as FieldDefinition<FieldDateMetadata>;
|
||||
|
||||
// TODO: we could use a hook that would return the field value with the right type
|
||||
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
||||
genericEntityFieldFamilySelector({
|
||||
entityId: currentEditableFieldEntityId ?? '',
|
||||
fieldName: viewField.metadata.fieldName,
|
||||
fieldName: currentEditableFieldDefinition
|
||||
? currentEditableFieldDefinition.metadata.fieldName
|
||||
: '',
|
||||
}),
|
||||
);
|
||||
|
||||
@ -34,7 +32,11 @@ export function GenericEditableDateFieldEditMode({ viewField }: OwnProps) {
|
||||
setFieldValue(newDateISO);
|
||||
|
||||
if (currentEditableFieldEntityId && updateField) {
|
||||
updateField(currentEditableFieldEntityId, viewField, newDateISO);
|
||||
updateField(
|
||||
currentEditableFieldEntityId,
|
||||
currentEditableFieldDefinition,
|
||||
newDateISO,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user