diff --git a/resources/common/common.less b/resources/common/common.less index 468cbab98..a75cb43db 100644 --- a/resources/common/common.less +++ b/resources/common/common.less @@ -15,7 +15,7 @@ @import './components/Indicators.less'; @import './components/SiteNotice.less'; @import './components/Menu.less'; - @import './components/MenuDropdown.less'; + @import './components/MenuDropdownCheckbox.less'; @import './components/MenuPortal.less'; @import './components/SearchBox.less'; @import './components/SidebarLogo.less'; diff --git a/resources/common/components/MenuDropdown.less b/resources/common/components/MenuDropdown.less deleted file mode 100644 index 31497e9d0..000000000 --- a/resources/common/components/MenuDropdown.less +++ /dev/null @@ -1,130 +0,0 @@ -@import '../variables.less'; -@import 'mediawiki.mixins.less'; - -/** - * Targets: - * - language variants, Actions menus - * - more menu, user menu - * - ULS button in sticky header - */ -.emptyPortlet .vector-menu-heading, -.vector-menu-dropdown .vector-menu-heading, -.mw-interlanguage-selector { - display: flex; - color: @color-base--subtle; - - &:after { - content: ''; - background: url( images/arrow-down.svg ) 100% 50% no-repeat; - width: unit( 16 / @font-size-tabs / @font-size-browser, em ); - height: unit( 16 / @font-size-tabs / @font-size-browser, em ); - // Modify the color of the image from the default #202122 to approx. #404244 to match the text. - opacity: 0.84; - } - - &:hover, - &:focus { - color: @color-base; - - &:after { - opacity: 1; - } - } -} - -.vector-menu-dropdown { - direction: ltr; - float: left; - cursor: pointer; - position: relative; - - // The menu itself. - .vector-menu-content { - background-color: @background-color-base; - list-style: none; - line-height: 1.125em; - // Match the width of the dropdown "heading" (the tab) - min-width: 100%; - position: absolute; - top: 100%; - left: -@border-width-base; - margin: 0; - border: @border-width-base @border-style-base @border-color-base; - padding: 0; - box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); - text-align: left; - opacity: 0; - visibility: hidden; - transition-property: opacity; - transition-duration: @transition-duration-base; - z-index: @z-index-menu; - } - - // Hide and show menu content based off checked status. - .vector-menu-checkbox:checked ~ .vector-menu-content { - opacity: 1; - visibility: visible; - } - - ul { - // display list style images introduced in typography.less. - list-style: none; - } - - li { - padding: 0; - margin: 0; - text-align: left; - line-height: 1em; - - a { - padding: 0.625em; - color: @color-link; - 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; - - :not( :checked ) > & { - // When the browser supports :checked, display it - display: block; - } -} - -.vector-menu-dropdown-noicon { - .vector-menu-heading { - // `padding-top` needs to scale with font-size. - padding: 1.25em 8px 6px; - font-weight: normal; - } - - // Add focus state to legacy menu dropdown buttons (i.e. p-variants, p-cactions) - .vector-menu-checkbox:focus + .vector-menu-heading { - // Simulate browser focus ring - outline: dotted 1px; // Firefox style - outline: auto -webkit-focus-ring-color; // Webkit style - } -} diff --git a/resources/common/components/MenuDropdownCheckbox.less b/resources/common/components/MenuDropdownCheckbox.less new file mode 100644 index 000000000..71b83571a --- /dev/null +++ b/resources/common/components/MenuDropdownCheckbox.less @@ -0,0 +1,93 @@ +@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