@blinkk/selective-edit
Version:
Selective structured text editor.
84 lines • 2.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Rule = exports.Rules = void 0;
const validation_1 = require("./validation");
const mixins_1 = require("../mixins");
class Rules {
constructor(ruleTypes) {
this.zoneToRules = {};
this.types = ruleTypes;
}
addRuleFromConfig(ruleConfig, zoneKey = validation_1.DEFAULT_ZONE_KEY) {
const newRule = this.types.newFromKey(ruleConfig.type, ruleConfig);
if (!newRule) {
console.error(`Unable to add validation rule for unknown validation type: ${ruleConfig.type}`);
return;
}
const zoneRules = this.getRulesForZone(zoneKey);
zoneRules.push(newRule);
}
getRulesForZone(zoneKey = validation_1.DEFAULT_ZONE_KEY) {
if (!this.zoneToRules[zoneKey]) {
this.zoneToRules[zoneKey] = [];
}
return this.zoneToRules[zoneKey];
}
get zones() {
return Object.keys(this.zoneToRules);
}
}
exports.Rules = Rules;
class Rule extends mixins_1.Base {
constructor(config) {
super();
this.defaultMessage = 'Value is invalid.';
this.config = config;
// Default to error level.
this.defaultLevel = validation_1.ValidationLevel.Error;
}
/**
* Default to allowing adding.
*
* @param value Current value of the field.
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
allowAdd(value) {
return true;
}
/**
* Default to allowing removal.
*
* @param value Current value of the field.
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
allowRemove(value) {
return true;
}
/**
* Does the rule make the value required?
*
* By default, a validation rule does not make the value required.
*/
get isRequired() {
return false;
}
/**
* Validation level to use if the validation fails.
*/
get level() {
return this.config.level || this.defaultLevel;
}
/**
* Error message from the config or fall back to the default.
*/
get message() {
return this.config.message || this.defaultMessage;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
validate(value) {
console.error('Validation check not defined.');
return null;
}
}
exports.Rule = Rule;
//# sourceMappingURL=validationRules.js.map