mediawiki-skins-Vector/resources/common/components/MenuDropdownCheckbox.less
Jan Drewniak 697b5deeda [Refactor] Split MenuDropdown.less for modern and legacy
Splits MenuDropdown styles into modern and legacy styles.

Leaves a common MenuDropdownCheckbox.less file (for lack
of a better name) for common styles related to the checkbox
behaviour and dropdown menu resets.

Adds a new file in common/mixins.less for a shared
dropdown mixin.

Bug: T312157
Change-Id: Ib60b25ea3121843ed5ed54820d6295a81289b332
2022-07-25 20:20:18 +00:00

94 lines
1.9 KiB
Plaintext

@import '../variables.less';
/**
* Common styles responsible for hiding/showing the Vector dropdown.
*/
/**
* Vector Dropdown. Contains the dropdown label, checkbox, and
* dropdown content.
*/
.vector-menu-dropdown {
cursor: pointer;
position: relative;
// Dropdown menu container. Hidden by default until checkbox is checked.
.vector-menu-content {
position: absolute;
top: 100%;
left: -@border-width-base;
opacity: 0;
visibility: hidden;
// The menu content should not be narrower than the menu button.
min-width: 100%;
margin: 0;
padding: 0;
z-index: @z-index-menu;
}
// Dropdown <ul> element.
.vector-menu-content-list {
list-style: none;
}
// dropdown list items.
.mw-list-item {
padding: 0;
margin: 0;
a {
// displays all links in a single column.
display: block;
white-space: nowrap;
cursor: pointer;
}
}
.selected a,
.selected a:visited {
color: @color-link-selected;
text-decoration: none;
}
}
/**
* Invisible checkbox covering the dropdown menu handle.
*/
.vector-menu-checkbox {
cursor: pointer;
position: absolute;
top: 0;
left: 0;
z-index: @z-index-menu-checkbox;
opacity: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
// Hide the checkbox completely in browsers that don't support :checked
display: none;
// Hide and show menu content based off checked status.
&:checked ~ .vector-menu-content {
opacity: 1;
visibility: visible;
}
:not( :checked ) > & {
// When the browser supports :checked, display it
display: block;
}
// flips the chevron so it points up when the dropdown is open.
&:checked + .vector-menu-heading:after {
transform: scaleY( -1 );
}
// Add focus state to menu dropdown buttons (i.e. #p-variants, #p-cactions)
&:focus + .vector-menu-heading {
// Simulate browser focus ring
outline: dotted 1px; // Firefox style
outline: auto -webkit-focus-ring-color; // Webkit style
}
}