Fixed sidebar not focusing active item when navigation is huge

This commit is contained in:
squidfunk 2022-12-12 23:26:55 +01:00
parent 54b98b23e5
commit 26c08f1f38
8 changed files with 40 additions and 43 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -234,13 +234,13 @@
</script> </script>
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
<script src="{{ 'assets/javascripts/bundle.c45ce4b3.min.js' | url }}"></script> <script src="{{ 'assets/javascripts/bundle.6d7e1051.min.js' | url }}"></script>
{% for path in config.extra_javascript %} {% for path in config.extra_javascript %}
<script src="{{ path | url }}"></script> <script src="{{ path | url }}"></script>
{% endfor %} {% endfor %}
{% endblock %} {% endblock %}
{% if page.meta and page.meta.ᴴₒᴴₒᴴₒ %} {% if page.meta and page.meta.ᴴₒᴴₒᴴₒ %}
<link rel="stylesheet" href="{{ 'assets/stylesheets/extra.ef53c8a4.min.css' | url }}"> <link rel="stylesheet" href="{{ 'assets/stylesheets/extra.e916454c.min.css' | url }}">
<script src="{{ 'assets/javascripts/extra/bundle.cfb3feee.min.js' | url }}" defer></script> <script src="{{ 'assets/javascripts/extra/bundle.cfb3feee.min.js' | url }}" defer></script>
{% endif %} {% endif %}
</body> </body>

View File

@ -29,9 +29,8 @@ import {
defer, defer,
distinctUntilChanged, distinctUntilChanged,
finalize, finalize,
first,
map, map,
observeOn,
take,
tap, tap,
withLatestFrom withLatestFrom
} from "rxjs" } from "rxjs"
@ -154,11 +153,13 @@ export function mountSidebar(
const { y } = getElementOffset(inner) const { y } = getElementOffset(inner)
return defer(() => { return defer(() => {
const push$ = new Subject<Sidebar>() const push$ = new Subject<Sidebar>()
push$ const next$ = push$
.pipe( .pipe(
auditTime(0, animationFrameScheduler), auditTime(0, animationFrameScheduler)
withLatestFrom(header$)
) )
/* Update sidebar height and offset */
next$.pipe(withLatestFrom(header$))
.subscribe({ .subscribe({
/* Handle emission */ /* Handle emission */
@ -175,11 +176,7 @@ export function mountSidebar(
}) })
/* Bring active item into view on initial load */ /* Bring active item into view on initial load */
push$ next$.pipe(first())
.pipe(
observeOn(animationFrameScheduler),
take(1)
)
.subscribe(() => { .subscribe(() => {
for (const item of getElements(".md-nav__link--active[href]", el)) { for (const item of getElements(".md-nav__link--active[href]", el)) {
const container = getElementContainer(item) const container = getElementContainer(item)