mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
synced 2024-11-26 00:25:40 +00:00
8c63ac7c55
Instead of aligning the edge of the main menu and ToC with the edge of the main menu button, this aligns the text of those sidebar items with the edge of the main menu button. NOTE: Currently not working with the vectorvisualenhancementnext feature flag enabled. This will be addressed in If3aed0ac401b0abc80c3ad52806eb85b33d43f06 Bug: T317583 Change-Id: I01f639c5ca63ac50235dc21ca5273c91213f041c
186 lines
4.9 KiB
Plaintext
186 lines
4.9 KiB
Plaintext
@import '../../common/variables.less';
|
|
|
|
@sidebar-toc-fade-height: 30px;
|
|
@sidebar-toc-vertical-padding: 20px;
|
|
@sidebar-toc-right-padding: 12px;
|
|
// Sidebar TOC uses increased left padding and a negative left margin to achieve
|
|
// a 15px spacing without clipping the chevron icon
|
|
// https://phabricator.wikimedia.org/T312156#8095894
|
|
@sidebar-toc-left-padding: 15px + @sidebar-toc-right-padding;
|
|
@toc-subsection-toggle-icon-size: 1.834em;
|
|
|
|
.mw-table-of-contents-container {
|
|
// Needed for Grid-based layout
|
|
align-self: start;
|
|
height: 100%;
|
|
|
|
.vector-feature-visual-enhancement-next-disabled & {
|
|
margin-left: 0;
|
|
}
|
|
}
|
|
|
|
.vector-sticky-toc-container {
|
|
// stylelint-disable-next-line plugin/no-unsupported-browser-features
|
|
position: sticky;
|
|
top: 0;
|
|
|
|
@media ( min-width: @min-width-desktop ) {
|
|
.vector-toc-not-collapsed & {
|
|
// Default spacing separating the sidebar TOC from the main menu or viewport.
|
|
// Need to use padding in order for the spacing to apply when sticky
|
|
padding-top: 1.5em;
|
|
}
|
|
|
|
.vector-toc-not-collapsed @{selector-main-menu-closed} ~ .mw-table-of-contents-container & {
|
|
// Needed to align TOC with bottom of title, 1.5em padding + 1.5em margin = 3em
|
|
margin-top: 1.5em;
|
|
}
|
|
}
|
|
}
|
|
|
|
.sidebar-toc,
|
|
.sidebar-toc:after {
|
|
// T312156 Update TOC spacing after removing background color
|
|
// Align the left edge of the TOC text with the main menu button icon.
|
|
margin-left: -@sidebar-toc-left-padding;
|
|
}
|
|
|
|
.sidebar-toc {
|
|
max-height: 75vh;
|
|
padding: @sidebar-toc-vertical-padding @sidebar-toc-right-padding @sidebar-toc-vertical-padding @sidebar-toc-left-padding;
|
|
box-sizing: border-box;
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
background-color: @background-color-page-container;
|
|
|
|
.sidebar-toc-header {
|
|
padding-bottom: 12px;
|
|
}
|
|
|
|
.sidebar-toc-title {
|
|
color: @color-base--subtle;
|
|
font-size: @font-size-base;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
}
|
|
|
|
.sidebar-toc-numb {
|
|
display: none;
|
|
}
|
|
|
|
.sidebar-toc-toggle {
|
|
// For no-js users, toggling is disabled and icon is hidden
|
|
display: none;
|
|
position: absolute;
|
|
top: 1px; // visually center icon
|
|
left: ~'calc( -1 * @{toc-subsection-toggle-icon-size} - 1px )'; // leaves 6px between icon + text
|
|
width: @toc-subsection-toggle-icon-size; // ~22px @ 12
|
|
height: @toc-subsection-toggle-icon-size;
|
|
font-size: 0.75em; // reduces size of toggle icon to 12px @ 16
|
|
transition: @transition-duration-base;
|
|
color: transparent;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.sidebar-toc-link {
|
|
word-break: break-word;
|
|
color: @color-link;
|
|
display: block;
|
|
}
|
|
|
|
// Highlight and bold active sections, active top sections that are unexpanded
|
|
// and active top sections that are the only active element.
|
|
.sidebar-toc-list-item-active,
|
|
.sidebar-toc-level-1-active:not( .sidebar-toc-list-item-expanded ),
|
|
.sidebar-toc-list-item-active.sidebar-toc-level-1-active {
|
|
> .sidebar-toc-link {
|
|
// Highlight active section
|
|
color: @color-base;
|
|
font-weight: bold;
|
|
|
|
.sidebar-toc-text {
|
|
// Increase width to prevent line wrapping due to bold text
|
|
// Avoid applying on link element to avoid focus indicator changing size
|
|
width: ~'calc( 100% + @{sidebar-toc-right-padding} )';
|
|
}
|
|
}
|
|
}
|
|
|
|
// Highlight active top sections that contain an active section
|
|
.sidebar-toc-level-1-active:not( .sidebar-toc-list-item-active ) > .sidebar-toc-link {
|
|
color: @color-base;
|
|
}
|
|
|
|
.sidebar-toc-text {
|
|
padding: 4px 0;
|
|
}
|
|
|
|
.sidebar-toc-contents,
|
|
.sidebar-toc-list {
|
|
margin: 0;
|
|
list-style: none;
|
|
line-height: 18px;
|
|
}
|
|
|
|
.sidebar-toc-list-item {
|
|
display: block;
|
|
position: relative;
|
|
list-style-type: none;
|
|
padding-left: 8px;
|
|
|
|
&.sidebar-toc-level-1 {
|
|
padding-left: 0;
|
|
}
|
|
|
|
a {
|
|
font-size: @font-size-base;
|
|
}
|
|
}
|
|
}
|
|
|
|
// T302076: Add fade scrollable indicator when TOC is in sidebar
|
|
// Avoid showing indicator when the TOC is floating, or collapsed in the page title/sticky header
|
|
@media ( min-width: @min-width-desktop ) {
|
|
.vector-toc-not-collapsed .sidebar-toc:after {
|
|
content: '';
|
|
display: block;
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: @sidebar-toc-fade-height;
|
|
background: linear-gradient( rgba( 255, 255, 255, 0 ), @background-color-page-container );
|
|
background-repeat: no-repeat;
|
|
background-position: -@sidebar-toc-right-padding; // T311436 Hacky way to prevent the fade from covering the scrollbar
|
|
pointer-events: none; // Make the link below the fade clickable
|
|
}
|
|
}
|
|
|
|
// Collapse ToC sections by default, excluding no-js
|
|
.client-js .sidebar-toc {
|
|
.sidebar-toc-level-1 .sidebar-toc-list-item {
|
|
display: none;
|
|
}
|
|
|
|
.sidebar-toc-level-1.sidebar-toc-list-item-expanded .sidebar-toc-list-item {
|
|
display: block;
|
|
}
|
|
|
|
.sidebar-toc-toggle {
|
|
display: block;
|
|
}
|
|
|
|
.sidebar-toc-level-1.sidebar-toc-list-item-expanded .sidebar-toc-toggle {
|
|
transform: rotate( 0deg );
|
|
}
|
|
}
|
|
|
|
.client-js body.ltr .sidebar-toc .sidebar-toc-toggle {
|
|
transform: rotate( -90deg );
|
|
}
|
|
|
|
.client-js body.rtl .sidebar-toc .sidebar-toc-toggle {
|
|
transform: rotate( 90deg );
|
|
}
|