Implement :valid :invalid pseudo classes (#26729)

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
John Poge II 2023-07-21 12:42:03 +02:00 committed by GitHub
parent 2b67392fd5
commit 5f2c6c09cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 324 additions and 241 deletions

View file

@ -20,7 +20,7 @@ use crate::dom::htmlformelement::{FormSubmitter, ResetFrom, SubmittedFrom};
use crate::dom::node::{window_from_node, BindContext, Node, UnbindContext};
use crate::dom::nodelist::NodeList;
use crate::dom::validation::{is_barred_by_datalist_ancestor, Validatable};
use crate::dom::validitystate::ValidityState;
use crate::dom::validitystate::{ValidationFlags, ValidityState};
use crate::dom::virtualmethods::VirtualMethods;
use dom_struct::dom_struct;
use html5ever::{LocalName, Prefix};
@ -242,6 +242,8 @@ impl VirtualMethods for HTMLButtonElement {
},
}
el.update_sequentially_focusable_status();
self.validity_state()
.perform_validation_and_update(ValidationFlags::all());
},
&local_name!("type") => match mutation {
AttributeMutation::Set(_) => {
@ -251,6 +253,8 @@ impl VirtualMethods for HTMLButtonElement {
_ => ButtonType::Submit,
};
self.button_type.set(value);
self.validity_state()
.perform_validation_and_update(ValidationFlags::all());
},
AttributeMutation::Removed => {
self.button_type.set(ButtonType::Submit);
@ -258,6 +262,8 @@ impl VirtualMethods for HTMLButtonElement {
},
&local_name!("form") => {
self.form_attribute_mutated(mutation);
self.validity_state()
.perform_validation_and_update(ValidationFlags::empty());
},
_ => {},
}