type fixes

This commit is contained in:
2026-06-05 21:29:50 +05:30
parent 28235f7e23
commit d46213b96b
12 changed files with 55 additions and 24 deletions

View File

@@ -1,4 +1,5 @@
import { FieldComponents } from '../../types/overrides';
import * as React from 'react';
import { FieldComponents, FieldComponentProps } from '../../types/overrides';
import TextFieldEntry from './TextField';
import NumberField from './NumberField';
import BooleanField from './BooleanField';
@@ -8,6 +9,19 @@ import RelationField from './RelationField';
import ImageUploadField from './ImageUploadField';
import FallbackField from './FallbackField';
const WrappedImageUploadField = (props: FieldComponentProps) =>
React.createElement(ImageUploadField, {
label: props.field.label,
value: props.value || '',
onUpload: async (file: File) => {
const url = await props.uploadFile?.(file);
if (url) props.onChange(url);
},
uploading: props.uploading,
baseUrl: props.baseUrl || '',
disabled: props.disabled,
});
export const defaultFieldComponents: FieldComponents = {
string: TextFieldEntry,
markdown: TextFieldEntry,
@@ -16,7 +30,7 @@ export const defaultFieldComponents: FieldComponents = {
date: DateField,
datetime: DateField,
enum: EnumField,
image: ImageUploadField,
image: WrappedImageUploadField,
relation: RelationField,
default: FallbackField,
};

View File

@@ -9,9 +9,9 @@ export interface FormFieldProps {
value: any;
onChange: (val: any) => void;
disabled?: boolean;
uploadFile: (file: File) => Promise<string | null>;
uploading: boolean;
baseUrl: string;
uploadFile?: (file: File) => Promise<string | null>;
uploading?: boolean;
baseUrl?: string;
relationDataMap?: Record<string, any[]>;
components: FieldComponents;
}
@@ -51,9 +51,9 @@ export default function FormField({
value={childProps.value}
onChange={childProps.onChange}
disabled={childProps.disabled}
uploadFile={childProps.uploadFile!}
uploading={childProps.uploading!}
baseUrl={childProps.baseUrl!}
uploadFile={childProps.uploadFile}
uploading={childProps.uploading}
baseUrl={childProps.baseUrl}
relationDataMap={childProps.relationDataMap}
components={components}
/>

View File

@@ -7,7 +7,7 @@ export default function RelationField({ field, value, onChange, disabled, relati
return null;
}
const relationData = relationDataMap[field.relation].data;
const relationData = relationDataMap[field.relation];
const isArrayRelation = field.type === 'array';
const options = getFieldOptions(field, relationData);
const keyField = field.enumOption?.key ?? 'id';