Validation (#216)

* Field config options: 'required' and 'pattern'
* Widget controls can implement it's own isValid
* Validation errors store in redux & displayed
* Support for returned Promises in isValid
* Allow widget controls to return either a boolean, an error object or a promise from isValid
This commit is contained in:
Cássio Souza
2017-01-13 19:30:40 -02:00
committed by GitHub
parent b710e706da
commit 3306670459
12 changed files with 224 additions and 25 deletions

View File

@ -7,6 +7,7 @@ import {
createEmptyDraft,
discardDraft,
changeDraftField,
changeDraftFieldValidation,
persistEntry,
} from '../actions/entries';
import { closeEntry } from '../actions/editor';
@ -23,6 +24,7 @@ class EntryPage extends React.Component {
addAsset: PropTypes.func.isRequired,
boundGetAsset: PropTypes.func.isRequired,
changeDraftField: PropTypes.func.isRequired,
changeDraftFieldValidation: PropTypes.func.isRequired,
collection: ImmutablePropTypes.map.isRequired,
createDraftFromEntry: PropTypes.func.isRequired,
createEmptyDraft: PropTypes.func.isRequired,
@ -72,8 +74,8 @@ class EntryPage extends React.Component {
};
handlePersistEntry = () => {
const { persistEntry, collection, entryDraft } = this.props;
persistEntry(collection, entryDraft);
const { persistEntry, collection } = this.props;
persistEntry(collection);
};
render() {
@ -84,6 +86,7 @@ class EntryPage extends React.Component {
boundGetAsset,
collection,
changeDraftField,
changeDraftFieldValidation,
addAsset,
removeAsset,
closeEntry,
@ -104,7 +107,9 @@ class EntryPage extends React.Component {
collection={collection}
fields={fields}
fieldsMetaData={entryDraft.get('fieldsMetaData')}
fieldsErrors={entryDraft.get('fieldsErrors')}
onChange={changeDraftField}
onValidate={changeDraftFieldValidation}
onAddAsset={addAsset}
onRemoveAsset={removeAsset}
onPersist={this.handlePersistEntry}
@ -138,6 +143,7 @@ export default connect(
mapStateToProps,
{
changeDraftField,
changeDraftFieldValidation,
addAsset,
removeAsset,
loadEntry,

View File

@ -40,8 +40,8 @@ export default function EntryPageHOC(EntryPage) {
};
// Overwrite persistEntry to persistUnpublishedEntry
returnObj.persistEntry = (collection, entryDraft) => {
dispatch(persistUnpublishedEntry(collection, entryDraft, unpublishedEntry));
returnObj.persistEntry = (collection) => {
dispatch(persistUnpublishedEntry(collection, unpublishedEntry));
};
}