25 lines
788 B
TypeScript
25 lines
788 B
TypeScript
import { useContext } from 'react';
|
|
import { useAPIClient } from '../../api-client';
|
|
import { useRecord } from '../../record-provider';
|
|
import { useCompile } from '../../schema-component';
|
|
import { CollectionFieldContext } from '../context';
|
|
import { useCollection } from './useCollection';
|
|
|
|
export const useCollectionField = () => {
|
|
const collection = useCollection();
|
|
const record = useRecord();
|
|
const api = useAPIClient();
|
|
const compile = useCompile();
|
|
const ctx = useContext(CollectionFieldContext);
|
|
if (!ctx) {
|
|
return {} as any;
|
|
}
|
|
const resourceName = `${ctx?.collectionName || collection?.name}.${ctx.name}`;
|
|
const resource = api?.resource(resourceName, record[ctx.sourceKey]);
|
|
return {
|
|
...ctx,
|
|
uiSchema: compile(ctx.uiSchema),
|
|
resource,
|
|
};
|
|
};
|