first commit

This commit is contained in:
dwindown
2025-08-21 20:39:34 +07:00
commit 58c1497171
576 changed files with 177044 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
window.validationMixin = {
methods: {
isVisible() {
// If fields or dependencies do not exist, field is visible
if (!this.fields || !Array.isArray(this.fields.dependencies)) {
return true;
}
// dependencies is an array, safe to use every()
return this.fields.dependencies.every(dep => {
if (!dep || !dep.field) return true;
const depValue = this.$parent?.$refs[dep.field]?.value;
return depValue === dep.value;
});
},
validateField() {
// Check if fields exists before accessing it
if (!this.fields) {
return true; // If fields is undefined, consider validation passed
}
const visible = this.isVisible();
const required = this.fields.required === true;
const value = this.field_value;
// Must be unique for each field instance!
const uniqueFieldId = this.field_id || (this.fields && this.fields.field_id);
const isValid = !required || (visible && value !== undefined && value !== null && value !== '');
// Only emit if we have a field_id
if (uniqueFieldId) {
this.$root.$emit('field-validation', {
fieldId: uniqueFieldId,
isValid
});
}
return isValid;
}
},
watch: {
field_value() {
// Only call validateField if it exists
if (typeof this.validateField === 'function') {
this.validateField();
const isValid = this.validateField();
}
}
},
mounted() {
// Only call validateField if it exists
if (typeof this.validateField === 'function') {
this.validateField();
}
}
};