DiscoTOC/common/common.scss
Penar Musaraj da0f76b65c
FIX: Prevent jumping on scroll (#33)
We previously added a reset to the topic body to fix some wrapping
issues, but looks like a) the reset is no longer necessary and b) it
causes jumping on scroll. So let's remove it.
2022-03-09 18:24:11 +01:00

240 lines
4.9 KiB
SCSS

$padding-basis: 0.75em;
.d-toc-main {
display: none;
width: 225px;
@media screen and (max-width: 1045px) {
.desktop-view & {
width: 150px;
}
}
border-left: 1px solid var(--primary-low);
box-sizing: border-box;
a {
display: block;
padding: 0.15em 0;
color: var(--primary-medium);
&.scroll-to-bottom {
padding-left: $padding-basis;
}
}
#d-toc {
max-height: calc(100vh - 4.5em - var(--header-offset));
padding-bottom: 0.5em;
overflow: auto;
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
li.d-toc-item {
margin: 0;
padding: 0;
padding-left: $padding-basis;
line-height: var(--line-height-large);
> ul {
max-height: 0;
overflow: hidden;
opacity: 0.5;
transition: opacity 0.3s ease-in-out, max-height 0.3s ease-in-out;
}
&.active,
.d-toc-wrapper.overlay & {
ul {
max-height: 500em;
overflow: visible;
opacity: 1;
}
}
> a:hover {
color: var(--primary-high);
}
&.direct-active > a {
position: relative;
color: var(--primary);
&:before {
content: "";
width: 1px;
margin-top: -1px;
background-color: var(--tertiary);
position: absolute;
height: 100%;
}
}
}
> ul > li > ul {
font-size: var(--font-down-1);
> li:first-child {
padding-top: 0.25em;
}
> li {
padding-bottom: 0.15em;
}
li.direct-active > a:before {
// it's odd that we need this
margin-left: -1px;
}
li.d-toc-h2 ~ li.d-toc-h3,
li.d-toc-h2 ~ li.d-toc-h4,
li.d-toc-h2 ~ li.d-toc-h5,
li.d-toc-h3 ~ li.d-toc-h4,
li.d-toc-h3 ~ li.d-toc-h5,
li.d-toc-h4 ~ li.d-toc-h5 {
> a {
padding-left: $padding-basis;
}
}
}
}
}
// active line marker
$selector: "> ul > li.direct-active > a:before";
$map: (
"left": "html:not(.rtl)",
"right": "html.rtl",
);
/*
// loop below generates styling for non-RTL and RTL
// Example:
html:not(.rtl) SELECTOR {
left: -.75em
}
html.rtl SELECTOR {
right: -.75em
}
*/
@each $prop, $parent in $map {
#{$parent} #d-toc {
#{$selector} {
#{$prop}: (-$padding-basis);
}
> ul > li #{$selector} {
#{$prop}: (-$padding-basis) * 2;
}
}
}
// END active line marker
.d-toc-mini,
a.d-toc-close {
display: none;
}
.d-toc-timeline-visible {
.d-toc-main,
.d-toc-mini {
display: block;
}
// overlayed timeline (on mobile and narrow screens)
.topic-navigation.with-topic-progress {
.d-toc-wrapper {
position: fixed;
margin-top: 0.25em;
height: calc(100vh - 50px - var(--header-offset));
opacity: 0.5;
right: -100vw;
top: var(--header-offset);
width: 75vw;
max-width: 350px;
background-color: var(--secondary);
box-shadow: shadow("dropdown");
z-index: z("modal", "overlay");
transition: all 0.2s ease-in-out;
.d-toc-main {
width: 100%;
padding: 0.5em;
height: 100%;
#d-toc {
max-height: calc(100% - 3em);
}
}
&.overlay {
right: 0;
width: 75vw;
opacity: 1;
.d-toc-main #d-toc li.d-toc-item ul {
transition: none;
}
}
a.scroll-to-bottom,
a.d-toc-close {
display: inline-block;
padding: 0.5em;
}
.d-toc-icons {
text-align: right;
}
}
}
// core overrides when timeline is active
.timeline-container,
#topic-progress {
display: none;
}
.container.posts .topic-navigation.with-topic-progress {
align-self: start;
}
}
// core sets first child's top margin to 0
// ensure it's also 0 when TOC markup is first
.cooked > div[data-theme-toc]:first-child + * {
margin-top: 0px;
}
// RTL Support
.rtl {
.d-toc-main {
border-left: none;
border-right: 1px solid var(--primary-low);
#d-toc li.d-toc-item,
a.scroll-to-bottom {
padding-left: 0;
padding-right: $padding-basis;
}
}
.d-toc-timeline-visible .topic-navigation.with-topic-progress .d-toc-wrapper {
right: unset;
left: -100vw;
&.overlay {
right: unset;
left: 0;
}
}
}
// Composer preview notice
.edit-title .d-editor-preview [data-theme-toc] {
background: var(--tertiary);
color: var(--secondary);
border-top: 2px solid var(--secondary);
position: sticky;
top: 0;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
&:before {
content: "#{$composer_toc_text}";
}
}
// Docs plugin outlet
.below-docs-topic-outlet.d-toc-wrapper {
position: sticky;
top: calc(var(--header-offset, 60px) + 1em);
max-height: calc(100vh - 2em - var(--header-offset, 60px));
.mobile-view & {
display: none;
}
}