Make item optional
This commit is contained in:
parent
6b3b1ef7d0
commit
b68a0c0380
@ -18,19 +18,21 @@ export interface ICRUDFieldProps<T> {
|
|||||||
|
|
||||||
export type TCRUDErrors<T> = Partial<Record<keyof T & string, string>>
|
export type TCRUDErrors<T> = Partial<Record<keyof T & string, string>>
|
||||||
|
|
||||||
|
export interface ICRUDField<T> {
|
||||||
|
Icon?: React.ComponentType
|
||||||
|
label: string
|
||||||
|
placeholder?: string
|
||||||
|
name: keyof T & string
|
||||||
|
type: TCRUDFieldType
|
||||||
|
}
|
||||||
|
|
||||||
export interface ICRUDFormProps<T> {
|
export interface ICRUDFormProps<T> {
|
||||||
errors: TCRUDErrors<T>
|
errors: TCRUDErrors<T>
|
||||||
id?: number
|
id?: number
|
||||||
item: T
|
item?: T
|
||||||
error: string
|
error: string
|
||||||
submitText: string
|
submitText: string
|
||||||
fields: Array<{
|
fields: Array<ICRUDField<T>>
|
||||||
Icon?: React.ComponentType
|
|
||||||
label: string
|
|
||||||
placeholder?: string
|
|
||||||
name: keyof T & string
|
|
||||||
type: TCRUDFieldType
|
|
||||||
}>
|
|
||||||
|
|
||||||
onSubmit: (t: T) => void
|
onSubmit: (t: T) => void
|
||||||
onChange(params: ICRUDChangeParams<T>): void
|
onChange(params: ICRUDChangeParams<T>): void
|
||||||
@ -73,14 +75,16 @@ export class CRUDForm<T> extends React.PureComponent<ICRUDFormProps<T>> {
|
|||||||
handleSubmit = (e: React.FormEvent) => {
|
handleSubmit = (e: React.FormEvent) => {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
const {onSubmit, item} = this.props
|
const {onSubmit, item} = this.props
|
||||||
onSubmit(item)
|
if (item) {
|
||||||
|
onSubmit(item)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
const {fields, item} = this.props
|
const {fields, item} = this.props
|
||||||
return (
|
return (
|
||||||
<form onSubmit={this.handleSubmit}>
|
<form onSubmit={this.handleSubmit}>
|
||||||
<p className='error'>{this.props.error}</p>
|
<p className='error'>{this.props.error}</p>
|
||||||
{fields.map(field => {
|
{!!item && fields.map(field => {
|
||||||
const error = this.props.errors[field.name]
|
const error = this.props.errors[field.name]
|
||||||
const value = item[field.name]
|
const value = item[field.name]
|
||||||
return (
|
return (
|
||||||
@ -90,6 +94,7 @@ export class CRUDForm<T> extends React.PureComponent<ICRUDFormProps<T>> {
|
|||||||
name={field.name}
|
name={field.name}
|
||||||
label={field.label}
|
label={field.label}
|
||||||
onChange={this.props.onChange}
|
onChange={this.props.onChange}
|
||||||
|
placeholder={field.placeholder}
|
||||||
error={error}
|
error={error}
|
||||||
Icon={field.Icon}
|
Icon={field.Icon}
|
||||||
value={String(value)}
|
value={String(value)}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user