diff --git a/__tests__/_has.test.scss b/__tests__/_has.test.scss new file mode 100644 index 0000000..57837b1 --- /dev/null +++ b/__tests__/_has.test.scss @@ -0,0 +1,34 @@ +@use "true" as *; +@use "example" as *; +@use "../src/utils/has" as *; + +@include test-module("`:has()` selector test [mix]") { + @include test("exist `:has()`") { + @include assert { + @include output { + @include Has { + @include example; + } + } + @include expect { + @supports selector(:has(a)) { + @include example; + } + } + } + } + @include test("don't exist `:has()`") { + @include assert { + @include output { + @include NotHas { + @include example; + } + } + @include expect { + @supports not selector(:has(a)) { + @include example; + } + } + } + } +} diff --git a/css/leptonChrome.css b/css/leptonChrome.css index 1f67dd3..5a29c81 100644 --- a/css/leptonChrome.css +++ b/css/leptonChrome.css @@ -4637,6 +4637,12 @@ } } } + @supports selector(:has(a)) { + #navigator-toolbox:has(#toolbar-menubar[autohide="false"]) { + --uc-window-drag-space-pre: 0px; + --uc-window-control-space: 0px; + } + } } @supports -moz-bool-pref("userChrome.tabbar.on_bottom") or -moz-bool-pref("userChrome.tabbar.one_liner") or -moz-bool-pref( "userChrome.hidden.tabbar" diff --git a/src/autohide/_bookmarkbar.scss b/src/autohide/_bookmarkbar.scss index 2c96db0..7c4b3d0 100644 --- a/src/autohide/_bookmarkbar.scss +++ b/src/autohide/_bookmarkbar.scss @@ -5,7 +5,7 @@ will-change: margin-bottom, opacity; @include Option("userChrome.autohide.toolbar_overlap") { - @supports not selector(:has(a)) { + @include NotHas { &[collapsed="true"] { visibility: visible !important; max-height: unset !important; diff --git a/src/autohide/_common.scss b/src/autohide/_common.scss index 1e7c6a2..93317cb 100644 --- a/src/autohide/_common.scss +++ b/src/autohide/_common.scss @@ -16,7 +16,7 @@ --uc-navbar-height: 0px; } } - @supports selector(:has(a)) { + @include Has { #navigator-toolbox:has(#PersonalToolbar[collapsed="true"]) { --uc-bm-height: 0px; } diff --git a/src/leptonChrome.scss b/src/leptonChrome.scss index 0edef2f..dc06906 100644 --- a/src/leptonChrome.scss +++ b/src/leptonChrome.scss @@ -6,6 +6,7 @@ @use "utils/native_menu" as *; @use "utils/one_liner" as *; @use "utils/window_control" as *; +@use "utils/has" as *; @use "utils/proton_elements" as Proton; @use "sass:selector"; diff --git a/src/tabbar/layout/_window_control_size.scss b/src/tabbar/layout/_window_control_size.scss index d571c56..5bcb3bf 100644 --- a/src/tabbar/layout/_window_control_size.scss +++ b/src/tabbar/layout/_window_control_size.scss @@ -101,3 +101,10 @@ } } } + +@include Has { + #navigator-toolbox:has(#toolbar-menubar[autohide="false"]) { + @include _remove_spacer_pre; + @include _remove_spacer_post; + } +} diff --git a/src/utils/_has.scss b/src/utils/_has.scss new file mode 100644 index 0000000..89b8027 --- /dev/null +++ b/src/utils/_has.scss @@ -0,0 +1,13 @@ +// Need `:has selector` + +@mixin Has() { + @supports selector(:has(a)) { + @content; + } +} + +@mixin NotHas() { + @supports not selector(:has(a)) { + @content; + } +}