{ this.props.description }
diff --git a/src/components/views/elements/Field.tsx b/src/components/views/elements/Field.tsx
index 58bd5226b6..4335cc46ac 100644
--- a/src/components/views/elements/Field.tsx
+++ b/src/components/views/elements/Field.tsx
@@ -61,6 +61,10 @@ interface IProps {
tooltipClassName?: string;
// If specified, an additional class name to apply to the field container
className?: string;
+ // On what events should validation occur; by default on all
+ validateOnFocus?: boolean;
+ validateOnBlur?: boolean;
+ validateOnChange?: boolean;
// All other props pass through to the .
}
@@ -100,6 +104,9 @@ export default class Field extends React.PureComponent {
public static readonly defaultProps = {
element: "input",
type: "text",
+ validateOnFocus: true,
+ validateOnBlur: true,
+ validateOnChange: true,
};
/*
@@ -137,9 +144,11 @@ export default class Field extends React.PureComponent {
this.setState({
focused: true,
});
- this.validate({
- focused: true,
- });
+ if (this.props.validateOnFocus) {
+ this.validate({
+ focused: true,
+ });
+ }
// Parent component may have supplied its own `onFocus` as well
if (this.props.onFocus) {
this.props.onFocus(ev);
@@ -147,7 +156,9 @@ export default class Field extends React.PureComponent {
};
private onChange = (ev) => {
- this.validateOnChange();
+ if (this.props.validateOnChange) {
+ this.validateOnChange();
+ }
// Parent component may have supplied its own `onChange` as well
if (this.props.onChange) {
this.props.onChange(ev);
@@ -158,9 +169,11 @@ export default class Field extends React.PureComponent {
this.setState({
focused: false,
});
- this.validate({
- focused: false,
- });
+ if (this.props.validateOnBlur) {
+ this.validate({
+ focused: false,
+ });
+ }
// Parent component may have supplied its own `onBlur` as well
if (this.props.onBlur) {
this.props.onBlur(ev);