You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
|
3 years ago
|
"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);
|
||
|
|
}
|
||
|
|
};
|