e-virt-table
Version:
A powerful data table based on canvas. You can use it as data grid、Microsoft Excel or Google sheets. It supports virtual scroll、cell edit etc.
75 lines • 2.38 kB
JavaScript
export default class Validator {
constructor(rules) {
Object.defineProperty(this, "rules", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.rules = rules;
}
validate(params) {
const errors = [];
const { column, row, key, rowKey, colIndex, rowIndex, value, field, fieldValue } = params;
if (!Array.isArray(this.rules)) {
this.rules = [this.rules];
}
for (const rule of this.rules) {
if (rule.validator) {
const ruleParam = {
field,
fieldValue,
value,
column,
colIndex,
rowIndex,
row,
key,
rowKey,
...rule,
};
rule.validator(ruleParam, value, (message) => {
if (message) {
errors.push({
...ruleParam,
message: message,
});
}
});
}
if (!rule.required && (value === undefined || value === null || value === '')) {
return errors;
}
if (rule.pattern && !rule.pattern.test(value)) {
errors.push({
value,
column,
row,
key,
rowKey,
colIndex,
rowIndex,
field,
fieldValue,
message: rule.message || `${key} is pattern validation error`,
});
}
if (rule.required && (value === undefined || value === null || value === '')) {
errors.push({
value,
column,
row,
key,
rowKey,
colIndex,
rowIndex,
field,
fieldValue,
message: rule.message || `${key} is required`,
});
}
}
return errors;
}
}
//# sourceMappingURL=Validator.js.map