UNPKG

@toolpad/core

Version:

Dashboard framework powered by Material UI.

68 lines 1.83 kB
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 };