mediawiki-skins-Vector/resources/skins.vector.styles.legacy/components/MenuDropdown.less
bwang 6a57506ae8 Separate vector-menu classes from Dropdowns
Bug: T319358
Change-Id: Idf05c1664c026f58487ba34af5ede8a11e695baf
2023-06-27 10:14:29 -05:00

148 lines
3.2 KiB
Plaintext

@import '../../common/variables.less';
@import 'mediawiki.mixins.less';
@import '../../common/mixins.less';
// Flips the chevron so it points up when the dropdown is open.
.vector-menu-checkbox:checked + .vector-menu-heading::after {
transform: scaleY( -1 );
}
/**
* Dropdown menus that only appear in the tab bar in legacy Vector.
*/
.vector-menu-dropdown {
direction: ltr;
float: left;
cursor: pointer;
position: relative;
line-height: 1.125em;
// menu label with chevron icon.
.vector-menu-heading {
display: flex;
color: @color-subtle;
font-size: @font-size-tabs;
// Tab separator: Outer end (right in LTR) border of "Actions" menu.
background-position: right bottom;
margin: 0 -@border-width-base 0 0;
// `padding-top` needs to scale with font-size.
padding: 1.25em 8px 6px;
font-weight: normal;
&::after {
.mixin-vector-legacy-menu-heading-arrow();
// Modify the color of the image from the default #202122 to approx. #404244 to match the text.
opacity: @opacity-icon-base;
}
&:hover,
&:focus {
color: @color-base;
&::after {
opacity: @opacity-icon-base--selected;
}
}
}
/**
* Dropdown container. Hidden by default until checkbox is checked.
*/
.vector-menu-content {
position: absolute;
top: 100%;
left: -@border-width-base;
opacity: 0;
height: 0;
visibility: hidden;
overflow: hidden;
margin: 0;
padding: 0;
z-index: @z-index-dropdown;
line-height: 1.125em;
background-color: @background-color-base;
border: @border-width-base @border-style-base @border-color-base;
border-top-width: 0;
box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 );
transition-property: opacity;
transition-duration: @transition-duration-base;
// The menu content should not be narrower than the menu button.
min-width: 100%;
}
// Dropdown <ul> element.
> .vector-menu-content-list {
list-style: none;
}
// Open the dropdown container via hover.
&:hover .vector-menu-content {
opacity: @opacity-base;
visibility: visible;
height: auto;
}
.mw-list-item {
padding: 0;
margin: 0;
text-align: left;
line-height: 1em;
a:not( .vector-icon ) {
font-size: @font-size-tabs;
}
a {
cursor: pointer;
// displays all links in a single column.
display: block;
white-space: nowrap;
padding: 0.625em;
color: @color-link;
}
&.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-stacking-1;
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;
height: auto;
}
:not( :checked ) > & {
// When the browser supports :checked, display it
display: block;
}
// Add focus state to menu dropdown buttons (i.e. #p-variants, #p-cactions)
&:focus + .vector-menu-heading:not( .cdx-button ) {
// Simulate browser focus ring
outline: dotted 1px; // Firefox style
outline: auto -webkit-focus-ring-color; // Webkit style
}
}