diff --git a/common/common.scss b/common/common.scss index 4491e38..53c1b3b 100644 --- a/common/common.scss +++ b/common/common.scss @@ -1,3 +1,5 @@ +@use "lib/viewport"; + $padding-basis: 0.75em; @media screen and (width >= 925px) { @@ -8,6 +10,9 @@ $padding-basis: 0.75em; } .d-toc-main { + @include viewport.from(sm) { + display: flex; + } min-width: 6em; max-width: 13em; word-wrap: break-word; @@ -58,6 +63,7 @@ $padding-basis: 0.75em; } &.active, + &.expand-all, .d-toc-wrapper.overlay & { ul { max-height: 500em; @@ -124,6 +130,12 @@ $padding-basis: 0.75em; } } +.d-toc { + &__btn-expand { + align-self: flex-start; + } +} + // active line marker $selector: "> ul > li.direct-active > a:before"; $map: ( diff --git a/javascripts/discourse/components/toc-contents.gjs b/javascripts/discourse/components/toc-contents.gjs index 4265c06..f1f43dd 100644 --- a/javascripts/discourse/components/toc-contents.gjs +++ b/javascripts/discourse/components/toc-contents.gjs @@ -36,6 +36,10 @@ export default class TocContents extends Component { return this.mappedTocStructure(this.args.tocStructure); } + get expandLabel() { + return this.args.expandAll ? "Reset expand" : "Expand all"; + } + @action setup() { this.listenForScroll(); @@ -64,6 +68,11 @@ export default class TocContents extends Component { ); } + @action + toggleExpandAll() { + this.args.expandAll = !this.args.expandAll; + } + @debounce(RESIZE_DEBOUNCE) calculateHeadingPositions() { this.updateHeadingPositions(); @@ -153,7 +162,11 @@ export default class TocContents extends Component {