@toolpad/core
Version:
Dashboard framework powered by Material UI.
68 lines • 1.83 kB
TypeScript
import * as React from 'react';
import { TextFieldProps } from '@mui/material/TextField';
import type { DataModel, DataSource, OmitId } from './types';
interface CrudFormState<D extends DataModel> {
values: Partial<OmitId<D>>;
errors: Partial<Record<keyof D, string>>;
}
export interface CrudFormSlotProps {
textField?: TextFieldProps;
}
export interface CrudFormSlots {
/**
* The text field component used in the form.
* @default TextField
*/
textField?: React.JSXElementConstructor<TextFieldProps>;
}
export interface CrudFormProps<D extends DataModel> {
/**
* Server-side [data source](https://mui.com/toolpad/core/react-crud/#data-sources).
*/
dataSource?: DataSource<D>;
/**
* Form state object, including field values and errors.
*/
formState: CrudFormState<D>;
/**
* Callback fired when a form field is changed.
*/
onFieldChange: (name: keyof D, value: string | number | boolean | File | null) => void | Promise<void>;
/**
* Callback fired when the form is submitted.
*/
onSubmit: (formValues: Partial<OmitId<D>>) => void | Promise<void>;
/**
* Callback fired when the form is reset.
*/
onReset?: (formValues: Partial<OmitId<D>>) => void | Promise<void>;
/**
* The components used for each slot inside.
* @default {}
*/
slots?: CrudFormSlots;
/**
* The props used for each slot inside.
* @default {}
*/
slotProps?: CrudFormSlotProps;
/**
* Text for form submit button.
*/
submitButtonLabel: string;
}
/**
*
* Demos:
*
* - [CRUD](https://mui.com/toolpad/core/react-crud/)
*
* API:
*
* - [CrudForm API](https://mui.com/toolpad/core/api/crud-form)
*/
declare function CrudForm<D extends DataModel>(props: CrudFormProps<D>): React.JSX.Element;
declare namespace CrudForm {
var propTypes: any;
}
export { CrudForm };