31 lines
815 B
JavaScript
31 lines
815 B
JavaScript
/**
|
|
* Forms that take in a schema and a model of the current data, manages smart
|
|
* inputs, and sends update events when valid data model changes must occur
|
|
*/
|
|
export default function schemaFormMixin(schema){
|
|
return {
|
|
data(){ return {
|
|
valid: true,
|
|
};},
|
|
created(){
|
|
this.validationContext = schema.newContext();
|
|
},
|
|
computed: {
|
|
errors(){
|
|
this.valid = true;
|
|
if (!this.model){
|
|
throw new Error("this.model must be set");
|
|
}
|
|
let cleanModel = this.validationContext.clean(this.model);
|
|
this.validationContext.validate(cleanModel);
|
|
let errors = {};
|
|
this.validationContext.validationErrors().forEach(error => {
|
|
if (this.valid) this.valid = false;
|
|
errors[error.name] = Attributes.simpleSchema().messageForError(error);
|
|
});
|
|
return errors;
|
|
},
|
|
},
|
|
};
|
|
}
|