aria-validated.js
(function(exports) {
var onChange = function(e) {
var input = e.target;
var valid = input.validity.valid;
input.setAttribute('aria-invalid', !valid);
if (valid) {
input.removeAttribute('aria-label');
} else {
input.setAttribute('aria-label', input.validationMessage);
}
};
var onKeyUp = function(e) {
if (e.target.name) {
return onChange.call(this, e);
}
};
document.registerElement('aria-validated', {
extends: 'form',
prototype: Object.create(
HTMLFormElement.prototype,
{
createdCallback: {value: function() {
H5F.setup(this);
}},
attachedCallback: {value: function() {
[].forEach.call(this.querySelectorAll('[required]'), function(input) {
input.setAttribute('aria-required', true);
});
this.addEventListener('change', onChange);
this.addEventListener('keyup', onKeyUp);
}},
detachedCallback: {value: function() {
this.removeEventListener('change', onChange);
this.removeEventListener('keyup', onKeyUp);
}}
}
)
});
})(this);