UNPKG

@blinkk/selective-edit

Version:
66 lines 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LengthRule = void 0; const validationRules_1 = require("../validationRules"); const dataType_1 = require("../../utility/dataType"); class LengthRule extends validationRules_1.Rule { constructor(config) { super(config); this.defaultMessage = 'Value needs to have the correct length.'; this.config = config; } allowAdd(value) { // Allow for empty fields. if (!value) { return true; } value = this.cleanValue(value); // Do not allow more to be added when at max length. if (this.config.max && value.length >= this.config.max.value) { return false; } return true; } allowRemove(value) { // Allow for empty fields. if (!value) { return true; } value = this.cleanValue(value); // Do not allow more to be removed when at min length. if (this.config.min && value.length <= this.config.min.value) { return false; } return true; } cleanValue(value) { if (dataType_1.DataType.isString(value)) { // Do not count whitespace. value = value.trim(); } return value; } /** * Field is considered required when there is a min value.. */ get isRequired() { return Boolean(this.config.min && this.config.min.value > 0); } validate(value) { // Allow for empty fields. // Use the required rule for making sure it exists. if (!value || (dataType_1.DataType.isArray(value) && value.length === 0)) { return null; } value = this.cleanValue(value); if (this.config.min && value.length < this.config.min.value) { return this.config.min.message || this.message; } if (this.config.max && value.length > this.config.max.value) { return this.config.max.message || this.message; } return null; } } exports.LengthRule = LengthRule; //# sourceMappingURL=length.js.map