mediawiki-skins-Vector/resources/skins.vector.zebra.styles/layouts/toc/unpinned.less
Jon Robson 68239ae344 Use Codex for button styles, start transitioning icons to use Codex icon mixins
Changes:
- mw-ui-button to cdx-button
- mw-ui-quiet to cdx-button--weight-quiet
- mw-ui-icon-element to cdx-button--icon-only
- mw-ui-icon to vector-icon
- mw-ui-icon-flush-right/left to vector-button-flush-right/left
- Removes $isSmallIcon param in Hooks.php

85 Visual Changes
- ~36 changes from minor pixel changes from the new button classes in the main menu, language button
- 22 from standardizing the padding of the TOC in page title
- ~10 changes from addition of .cdx-button to the TOC toggle buttons

PERFORMANCE:
This will result in an overall increase of 2.7kb of render blocking
CSS, 1kb will be reclaimed when
I6c1ed1523df8cc9e2f2ca09506f12a595b8b013d is merged.

Co-author: Bernard Wang <bwang@wikimedia.org>
Bug: T336526
Change-Id: Ibd558238a41a0d3edb981e441638f9564f43d226
2023-06-12 16:26:28 -07:00

134 lines
3.3 KiB
Plaintext

@selector-nojs-collapsed-toc-open: ~'#vector-toc-collapsed-checkbox:checked';
// TOC dropdown styles
#vector-toc-collapsed-button,
.vector-sticky-header-toc,
.vector-page-titlebar-toc {
display: none;
margin-right: 8px;
}
// TOC styles when unpinned
.mixin-toc-unpinned() {
display: block;
> .vector-menu-content {
// Override default dropdown max width
max-width: none;
}
// Shared unpinned TOC styles, applies across all unpinned cases (page titlebar, sticky header, floating)
.vector-toc {
// 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 below page title
.mixin-toc-below-page-title {
position: fixed;
top: 12px;
left: 12px;
margin: 0;
z-index: @z-index-dropdown;
}
&.client-js {
@media ( max-width: @max-width-tablet ) {
//
// TOC in page titlebar on narrow screens
//
.vector-page-titlebar-toc {
.mixin-toc-unpinned();
}
//
// TOC in page titlebar on narrow screens below page title
//
.vector-below-page-title .vector-page-titlebar-toc {
.mixin-toc-below-page-title();
}
}
@media ( min-width: @min-width-desktop ) {
//
// TOC in page titlebar
//
&.vector-feature-toc-pinned-disabled body:not( .vector-sticky-header-visible ) {
.vector-page-titlebar-toc {
.mixin-toc-unpinned();
}
}
//
// TOC in page titlebar below page title
//
&.vector-feature-toc-pinned-disabled body:not( .vector-sticky-header-visible ).vector-below-page-title {
.vector-page-titlebar-toc {
.mixin-toc-below-page-title();
}
}
//
// TOC in sticky header
//
&.vector-feature-toc-pinned-disabled .vector-sticky-header-visible {
.vector-sticky-header-toc {
.mixin-toc-unpinned();
}
}
}
}
&.client-nojs {
//
// No-JS TOC in page titlebar
//
&.vector-feature-toc-pinned-disabled {
.vector-page-titlebar-toc {
.mixin-toc-unpinned();
}
}
//
// No-JS TOC in page titlebar on narrow screens for anon users
//
@media ( max-width: @max-width-tablet ) {
// Make the TOC appear in the page titlebar on small viewports
// even when the TOC location in the DOM is actually in the sidebar
// This case only happens for no-js anon users.
&.vector-feature-toc-pinned-enabled {
#vector-toc-collapsed-button {
display: block;
}
#vector-toc-pinned-container {
// Override TOC container's sticky positioning
position: relative;
.mixin-toc-unpinned();
}
.vector-toc {
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-dropdown;
}
@{selector-nojs-collapsed-toc-open} ~ .mw-table-of-contents-container .vector-toc {
// Hide the TOC when the button is not checked
display: block;
}
}
}
}