"use strict";
|
|
exports.implementation = class ValidityStateImpl {
|
constructor(element, state = {}) {
|
this._element = element;
|
this._state = state;
|
}
|
|
get badInput() {
|
return this._failsConstraint("badInput");
|
}
|
|
// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-a-custom-error
|
get customError() {
|
return this._element._customValidityErrorMessage !== "";
|
}
|
|
get patternMismatch() {
|
return this._failsConstraint("patternMismatch");
|
}
|
|
get rangeOverflow() {
|
return this._failsConstraint("rangeOverflow");
|
}
|
|
get rangeUnderflow() {
|
return this._failsConstraint("rangeUnderflow");
|
}
|
|
get stepMismatch() {
|
return this._failsConstraint("stepMismatch");
|
}
|
|
get tooLong() {
|
return this._failsConstraint("tooLong");
|
}
|
|
get tooShort() {
|
return this._failsConstraint("tooShort");
|
}
|
|
get typeMismatch() {
|
return this._failsConstraint("typeMismatch");
|
}
|
|
get valueMissing() {
|
return this._failsConstraint("valueMissing");
|
}
|
|
_failsConstraint(method) {
|
const validationMethod = this._state[method];
|
if (validationMethod) {
|
return this._element.willValidate && validationMethod();
|
}
|
|
return false;
|
}
|
|
get valid() {
|
return !(this.badInput || this.valueMissing || this.customError ||
|
this.patternMismatch || this.rangeOverflow || this.rangeUnderflow ||
|
this.stepMismatch || this.tooLong || this.tooShort || this.typeMismatch);
|
}
|
};
|