Specification
Validation

Validation

Requirements for the value of this field. These validations apply when using Interweave's validatefunction. By default, this object is undefined.

min

TypeRequiredDefault
numberNoundefined

Only applies to type: number. The minimum value.

const config = {
  fields: {
    age: {
      schema: {
        type: "number"
      },
      validation: {
        min: 0
      }
    }
  }
};

max

TypeRequiredDefault
numberNoundefined

Only applies to type: number. The maximum value.

const config = {
  fields: {
    age: {
      schema: {
        type: "number"
      },
      validation: {
        max: 120
      }
    }
  }
};

equals

TypeRequiredDefault
anyNoundefined

The submitted value must be equal to this value.

const config = {
  fields: {
    age: {
      schema: {
        type: "number"
      },
      validation: {
        equals: 18
      }
    }
  }
};

is_not

TypeRequiredDefault
anyNoundefined
const config = {
  fields: {
    firstName: {
      schema: {
        type: "string"
      },
      validation: {
        is_not: "Mike"
      }
    }
  }
};

length

TypeRequiredDefault
numberNoundefined

Only applies when the field is a string or is_array is true. Ensures the length of the string or array is equal to this value.

const config = {
  fields: {
    entries: {
      schema: {
        type: "number",
        is_array: true
      },
      validation: {
        length: 7
      }
    }
  }
};

min_length

TypeRequiredDefault
numberNoundefined

Only applies when the field is a string or is_array is true. Ensures the length of the string or array is equal to this value.

const config = {
  fields: {
    firstName: {
      schema: {
        type: "string"
      },
      validation: {
        min_length: 2
      }
    }
  }
};

max_length

TypeRequiredDefault
numberNoundefined

Only applies when the field is a string or is_array is true. Ensures the length of the string or array is equal to this value.

const config = {
  fields: {
    firstName: {
      schema: {
        type: "string"
      },
      validation: {
        max_length: 25
      }
    }
  }
};

is_email

TypeRequiredDefault
boolean or objectNoundefined

Whether this field should only accept valid emails or not. Accepts a boolean or object outlining the details.

const config = {
  fields: {
    firstName: {
      schema: {
        type: "string"
      },
      validation: {
        is_email: true
      }
    }
  }
};

or alternatively for more fine-grained control:

const config = {
  fields: {
    firstName: {
      schema: {
        type: "string"
      },
      validation: {
        is_email: {
          forbidden_domains: ["gmail", "yahoo", "hotmail"], // optional
          forbidden_tlds: ["com", "io", "net", "af"] // optional
        }
      }
    }
  }
};

is_phone

TypeRequiredDefault
boolean or objectNoundefined

Whether this field should only accept valid phone numbers or not. Accepts a boolean.

const config = {
  fields: {
    phone: {
      schema: {
        type: "string"
      },
      validation: {
        is_phone: true
      }
    }
  }
};

Dependent fields

Specify a field that must fulfill a condition if the other is present. Each accepts an array of targets that parse the created object. Ususally this is just the key name.

const config = {
  fields: {
    firstName: {
      schema: {
        type: "string",
        is_optional: true
      }
    },
    lastName: {
      schema: {
        type: "string",
        is_optional: true
      },
      validation: {
        ensure_present_if_any_present: ["firstName"] // if firstName has a value, this field is required
      }
    }
  }
};

If you use interface.form.out_key to set a different output path, then make sure to specify that new path in the dependency array.

const config = {
  fields: {
    firstName: {
      schema: {
        type: "string",
        is_optional: true
      },
      interface: {
        form: {
          out_key: "user_first_name"
        }
      }
    },
    lastName: {
      schema: {
        type: "string",
        is_optional: true
      },
      validation: {
        ensure_present_if_any_present: ["user_first_name"]
      }
    }
  }
};

Here are other available options:

ensure_present_if_all_present

  • This field is required if all fields are present.

ensure_present_if_any_present

  • This field is required if any of these fields are present.

ensure_present_if_any_empty

  • This field is required if any of these fields are empty.
ensure_present_if_all_empty
  • This field is required if all of these fields are empty.

ensure_present_if_none_empty

  • This field is required if none of these fields are empty.

ensure_empty_if_any_present

  • This field must be empty if any of these fields are present.

ensure_empty_if_all_present

  • This field must be empty if all of these fields are present.

ensure_empty_if_all_empty

  • This field must be empty if all of these fields are empty.

ensure_empty_if_any_empty

  • This field must be empty if any of these fields are empty.

ensure_empty_if_none_empty

  • This field must be empty if none of these fields are empty.