- Added Linaria to have compiled CSS on our optimized field displays - Refactored mocks for performance stories on fields - Refactored generateRecordChipData into a global context, computed only when we fetch object metadata items. - Refactored ChipFieldDisplay - Refactored PhoneFieldDisplay
79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
import { ReactNode } from 'react';
|
|
|
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
|
import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition';
|
|
import { getBasePathToShowPage } from '@/object-metadata/utils/getBasePathToShowPage';
|
|
import {
|
|
FieldContext,
|
|
RecordUpdateHook,
|
|
} from '@/object-record/record-field/contexts/FieldContext';
|
|
import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope';
|
|
|
|
export const useMockFieldContext = ({
|
|
clearable,
|
|
fieldMetadataName,
|
|
fieldPosition,
|
|
isLabelIdentifier = false,
|
|
objectNameSingular,
|
|
objectRecordId,
|
|
customHotkeyScope,
|
|
}: {
|
|
clearable?: boolean;
|
|
fieldMetadataName: string;
|
|
fieldPosition: number;
|
|
isLabelIdentifier?: boolean;
|
|
objectNameSingular: string;
|
|
objectRecordId: string;
|
|
customHotkeyScope?: string;
|
|
}) => {
|
|
const { objectMetadataItem } = useObjectMetadataItem({
|
|
objectNameSingular,
|
|
});
|
|
|
|
const basePathToShowPage = getBasePathToShowPage({
|
|
objectNameSingular,
|
|
});
|
|
|
|
const fieldMetadataItem = objectMetadataItem?.fields.find(
|
|
(field) => field.name === fieldMetadataName,
|
|
);
|
|
|
|
const useUpdateOneObjectMutation: RecordUpdateHook = () => {
|
|
const updateEntity = () => {};
|
|
|
|
return [updateEntity, { loading: false }];
|
|
};
|
|
|
|
const FieldContextProvider =
|
|
fieldMetadataItem && objectMetadataItem
|
|
? ({ children }: { children: ReactNode }) => (
|
|
<FieldContext.Provider
|
|
key={objectRecordId + fieldMetadataItem.id}
|
|
value={{
|
|
basePathToShowPage: isLabelIdentifier
|
|
? basePathToShowPage
|
|
: undefined,
|
|
entityId: objectRecordId,
|
|
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
|
isLabelIdentifier,
|
|
fieldDefinition: formatFieldMetadataItemAsColumnDefinition({
|
|
field: fieldMetadataItem,
|
|
position: fieldPosition,
|
|
objectMetadataItem,
|
|
}),
|
|
useUpdateRecord: useUpdateOneObjectMutation,
|
|
hotkeyScope:
|
|
customHotkeyScope ?? InlineCellHotkeyScope.InlineCell,
|
|
clearable,
|
|
}}
|
|
>
|
|
{children}
|
|
</FieldContext.Provider>
|
|
)
|
|
: undefined;
|
|
|
|
return {
|
|
FieldContextProvider,
|
|
};
|
|
};
|