django_airavata/static/common/js/mixins/ValidationParent.js (25 lines of code) (raw):
/**
* Aggregate validation state of child components. Child components should
* dispatch 'valid' and 'invalid' events and component using this mixin should
* call recordValidChildComponent or recordInvalidChildComponent, respectively.
*/
export default {
data: function () {
return {
invalidChildComponents: [],
};
},
computed: {
childComponentsAreValid() {
return this.invalidChildComponents.length === 0;
},
},
methods: {
recordInvalidChildComponent(childComponentId) {
if (!this.invalidChildComponents.includes(childComponentId)) {
this.invalidChildComponents.push(childComponentId);
}
},
recordValidChildComponent(childComponentId) {
if (this.invalidChildComponents.includes(childComponentId)) {
const index = this.invalidChildComponents.indexOf(childComponentId);
this.invalidChildComponents.splice(index, 1);
}
},
},
};