style: Add popover attribute and part of basic popover functionality

Starts to add part of the basic functionality for popover. Including
[1] :open & :closed CSS pseudo class
[2] showPopover(), hidePopover() and togglePopover() interfaces. Much of the
functionality is still to-do.
[3] PopoverData interface

Differential Revision: https://phabricator.services.mozilla.com/D171719
This commit is contained in:
Ziran Sun 2023-03-10 10:52:20 +00:00 committed by Martin Robinson
parent 3ded7ff273
commit 29a9f0da46
3 changed files with 7 additions and 0 deletions

View file

@ -39,6 +39,7 @@ macro_rules! apply_non_ts_list {
("active", Active, ACTIVE, _), ("active", Active, ACTIVE, _),
("autofill", Autofill, AUTOFILL, _), ("autofill", Autofill, AUTOFILL, _),
("checked", Checked, CHECKED, _), ("checked", Checked, CHECKED, _),
("closed", Closed, CLOSED, _),
("defined", Defined, DEFINED, _), ("defined", Defined, DEFINED, _),
("disabled", Disabled, DISABLED, _), ("disabled", Disabled, DISABLED, _),
("enabled", Enabled, ENABLED, _), ("enabled", Enabled, ENABLED, _),
@ -69,6 +70,7 @@ macro_rules! apply_non_ts_list {
("-moz-math-increment-script-level", MozMathIncrementScriptLevel, INCREMENT_SCRIPT_LEVEL, _), ("-moz-math-increment-script-level", MozMathIncrementScriptLevel, INCREMENT_SCRIPT_LEVEL, _),
("required", Required, REQUIRED, _), ("required", Required, REQUIRED, _),
("open", Open, OPEN, _),
("optional", Optional, OPTIONAL_, _), ("optional", Optional, OPTIONAL_, _),
("valid", Valid, VALID, _), ("valid", Valid, VALID, _),
("invalid", Invalid, INVALID, _), ("invalid", Invalid, INVALID, _),

View file

@ -141,6 +141,9 @@ impl NonTSPseudoClass {
/// Returns whether the pseudo-class is enabled in content sheets. /// Returns whether the pseudo-class is enabled in content sheets.
#[inline] #[inline]
fn is_enabled_in_content(&self) -> bool { fn is_enabled_in_content(&self) -> bool {
if matches!(*self, Self::Open | Self::Closed) {
return static_prefs::pref!("dom.element.popover.enabled");
}
!self.has_any_flag(NonTSPseudoClassFlag::PSEUDO_CLASS_ENABLED_IN_UA_SHEETS_AND_CHROME) !self.has_any_flag(NonTSPseudoClassFlag::PSEUDO_CLASS_ENABLED_IN_UA_SHEETS_AND_CHROME)
} }

View file

@ -1996,9 +1996,11 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
NonTSPseudoClass::Enabled | NonTSPseudoClass::Enabled |
NonTSPseudoClass::Disabled | NonTSPseudoClass::Disabled |
NonTSPseudoClass::Checked | NonTSPseudoClass::Checked |
NonTSPseudoClass::Closed |
NonTSPseudoClass::Fullscreen | NonTSPseudoClass::Fullscreen |
NonTSPseudoClass::Indeterminate | NonTSPseudoClass::Indeterminate |
NonTSPseudoClass::MozInert | NonTSPseudoClass::MozInert |
NonTSPseudoClass::Open |
NonTSPseudoClass::PlaceholderShown | NonTSPseudoClass::PlaceholderShown |
NonTSPseudoClass::Target | NonTSPseudoClass::Target |
NonTSPseudoClass::Valid | NonTSPseudoClass::Valid |