diff --git a/package-lock.json b/package-lock.json index 2f1c52c..8ce9ba4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ampel-ui", - "version": "0.16.1", + "version": "0.16.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/form/form.tsx b/src/form/form.tsx index c158117..47630db 100644 --- a/src/form/form.tsx +++ b/src/form/form.tsx @@ -77,6 +77,13 @@ interface ValidationOptions { type ViolationMessageResolver = (key: string, context: object | null) => string; +interface FormButtonProps { + key: number; + isSubmitting: boolean; + isDirty: boolean; + isValid: boolean; +} + interface Props { model: MODEL; onCancel?: () => void; @@ -88,6 +95,7 @@ interface Props { validationSchema?: any; validationOptions?: ValidationOptions; resolveViolationMessage?: ViolationMessageResolver; + additionalButtonRenderers?: Array<(buttonProps: FormButtonProps) => React.ReactNode>; } interface State { @@ -143,6 +151,16 @@ class Form extends React.Component, State {this.props.onCancel && this.getCancelButton()} + {this.props.additionalButtonRenderers && + this.props.additionalButtonRenderers.map((buttonRenderer, index) => + buttonRenderer({ + key: index, + isSubmitting: this.state.isSubmitting, + isDirty: this.state.isDirty, + isValid: this.state.isValid, + }) + )} +