mediawiki-skins-Vector/resources/skins.vector.styles/components/TableOfContentsUnpinned.less
bwang 4efafaf374 Fix TOC scrollable indicator
Causes 4 minor visual regressions where the collapsed toc width is slightly smaller
will be fixed when page tools is deployed.
https://jmp.sh/o3vlGVlb

- Remove @padding-vertical-toc, @padding-right-toc and @padding-left-toc variables, which would need to be removed after page tools is enabled anyway
- Remove @height-collapsed-toc-button, @padding-top-content-px and @max-width-collapsed-toc variables which weren't needed
- Greatly simplify CSS for collapsed TOC width

Bug: T324877
Change-Id: I6d44d4b49fb5dccd776dfe0e96740fdb9bff4c5d
2023-01-10 17:21:26 -06:00

166 lines
4.9 KiB
Plaintext

@import '../../common/variables.less';
@import '../../common/mixins.less';
@selector-nojs-collapsed-toc-open: ~'#vector-toc-collapsed-checkbox:checked';
.vector-feature-page-tools-enabled #vector-page-titlebar-toc-unpinned-container,
.vector-feature-page-tools-enabled #vector-sticky-header-toc-unpinned-container {
.vector-toc {
.vector-pinnable-header {
padding-left: @padding-horizontal-dropdown-menu-item + @spacing-subsection-toggle;
}
.vector-toc-contents {
padding-right: @padding-horizontal-dropdown-menu-item;
padding-left: @padding-horizontal-dropdown-menu-item + @spacing-subsection-toggle;
}
}
}
.mixin-toc-dropdown-button() {
display: none;
margin-right: 4px;
z-index: @z-index-menu;
// Override background color for when the TOC button overlaps content
// as a fixed element when the page is scrolled down.
background-color: @background-color-base;
}
#vector-toc-collapsed-button {
.mixin-toc-dropdown-button();
}
@media ( max-width: @max-width-tablet ) {
.client-nojs {
#vector-toc-collapsed-button {
display: block;
// Override the default button styles so the ToC button is slightly shorter when collapsed into the page title
padding: 7px 12px;
&:hover,
&:active {
background-color: @colorGray15;
}
}
#vector-toc-pinned-container {
// Override TOC container's sticky positioning
position: relative;
}
// FIXME: Remove all .sidebar-toc selectors after I5b9228380f5c4674ef424d33127a5cb4010822da is in prod for 5 days
.sidebar-toc,
.vector-toc {
.mixin-toc-collapsed();
display: none;
position: absolute;
top: 36px; // TOC button height
// FIXME: Don't use a magic number. This used to be tied to the private variable in core
// @icon-padding-md so perhaps this needs to make use of the flush classes?
left: -12px;
margin-top: @padding-top-content; // Account for padding-top from .mw-body
// FIXME: Collapsed TOC styles are not consistent with other vector dropdowns
border: @border-width-base @border-style-base @border-color-base;
z-index: @z-index-menu;
}
// FIXME: Remove all .sidebar-toc selectors after I5b9228380f5c4674ef424d33127a5cb4010822da is in prod for 5 days
@{selector-nojs-collapsed-toc-open} ~ .mw-table-of-contents-container .sidebar-toc,
@{selector-nojs-collapsed-toc-open} ~ .mw-table-of-contents-container .vector-toc {
// Hide the TOC when the button is not checked
display: block;
}
}
}
.vector-page-titlebar-toc {
.mixin-toc-dropdown-button();
&.ve-active {
display: none !important; /* stylelint-disable-line declaration-no-important */
}
.vector-menu-heading {
// Override the default button styles so the ToC button is slightly shorter when collapsed into the page title
@media ( max-width: @max-width-tablet ) {
padding: 7px 12px;
}
}
}
// Shared collapsed TOC styles, applies across all cases (page titlebar, sticky header, floating)
.mixin-toc-collapsed() {
// T316056 Remove TOC menu fixed width and apply min/max-width
width: max-content;
min-width: 200px;
// Collapsed TOC should be smaller than 85% of the content container (51em) and 75vw
max-width: ~'min( 0.85 * @{max-width-content-container}, 75vw )'; // min( 51em, 75vw )
}
// TOC styles when in page titlebar
.mixin-toc-collapsed-page-titlebar() {
.vector-page-titlebar-toc {
display: block;
// FIXME: Remove all .sidebar-toc selectors after I5b9228380f5c4674ef424d33127a5cb4010822da is in prod for 5 days
.sidebar-toc,
.vector-toc {
.mixin-toc-collapsed();
}
}
}
.client-js {
@media ( max-width: @max-width-tablet ) {
// Prevent layout shift from the TOC being in the sidebar before JS loads and
// moves the TOC into the page titlebar on small screens
// FIXME: Remove all .sidebar-toc selectors after I5b9228380f5c4674ef424d33127a5cb4010822da is in prod for 5 days
#vector-toc-pinned-container .sidebar-toc,
#vector-toc-pinned-container .vector-toc {
display: none;
}
// Hide pin ToC toggles on smaller resolution
// FIXME: Remove all .sidebar-toc selectors after I5b9228380f5c4674ef424d33127a5cb4010822da is in prod for 5 days
.sidebar-toc .vector-pinnable-header-toggle-button,
.vector-toc .vector-pinnable-header-toggle-button {
display: none;
}
//
// TOC in page titlebar on narrow screens
//
.mixin-toc-collapsed-page-titlebar();
//
// TOC floating on narrow screens when below page title
//
.vector-below-page-title {
.vector-page-titlebar-toc {
position: fixed;
top: 0;
left: 0;
margin: 0;
}
}
}
@media ( min-width: @min-width-desktop ) {
//
// TOC in page titlebar
//
.vector-toc-unpinned:not( .vector-sticky-header-visible ) {
.mixin-toc-collapsed-page-titlebar();
}
//
// TOC in sticky header
//
// FIXME: Remove all .sidebar-toc selectors after I5b9228380f5c4674ef424d33127a5cb4010822da is in prod for 5 days
.vector-toc-unpinned.vector-sticky-header-visible .sidebar-toc,
.vector-toc-unpinned.vector-sticky-header-visible .vector-toc {
.mixin-toc-collapsed();
}
}
}