* misc edits in /docs; mostly style, grammar, consistency * changes per reviewers requests * removed .md ext from links in 2 files per request
1.8 KiB
Executable File
Collection Field Validation
Available validations to use on config.yml
:
-
Presence: By default all widgets are required, unless specified in the config. Example:
- {label: "Subtitle", name: "subtitle", widget: "string", required: false}
-
Pattern: Field configuration can specify a regex pattern with the appropriate error message. Example:
- {label: "Title", name: "title", widget: "string", pattern: [".{10,}", "Should have more than 10 characters"] }
Advanced Guide (For widget authors)
The widget control can optionally implement an isValid
method to perform custom validations, in addition to presence and pattern. The isValid
method will be automatically called, and it can return either a boolean value, an object with an error message or a promise. Examples:
Boolean No errors:
isValid = () => {
// Do internal validation
return true;
};
Existing error:
isValid = () => {
// Do internal validation
return false;
};
Object with error
(useful for returning custom error messages)
Existing error:
isValid = () => {
// Do internal validation
return { error: 'Your error message.' };
};
Promise
You can also return a promise from isValid
. While the promise is pending, the widget will be marked as "in error". When the promise resolves, the error is automatically cleared.
isValid = () => {
return this.existingPromise;
};
Note: Do not create a promise inside isValid
- isValid
is called right before trying to persist. This means that even if a previous promise was already resolved, when the user hits 'save', isValid
will be called again. If it returns a new promise, it will be immediately marked as "in error" until the new promise resolves.