UNPKG

@blinkk/selective-edit

Version:
84 lines 2.48 kB
"use strict"; 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