mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2026-07-23 06:13:38 -04:00
Fixed invalid outdated version banner URL when using instant loading
This commit is contained in:
@@ -237,6 +237,7 @@ export function setupInstantLoading(
|
||||
"[data-md-component=announce]",
|
||||
"[data-md-component=container]",
|
||||
"[data-md-component=header-topic]",
|
||||
"[data-md-component=outdated]",
|
||||
"[data-md-component=logo]",
|
||||
"[data-md-component=skip]",
|
||||
...feature("navigation.tabs.sticky")
|
||||
|
||||
@@ -22,12 +22,14 @@
|
||||
|
||||
import {
|
||||
EMPTY,
|
||||
Subject,
|
||||
combineLatest,
|
||||
filter,
|
||||
fromEvent,
|
||||
map,
|
||||
of,
|
||||
switchMap
|
||||
switchMap,
|
||||
switchMapTo
|
||||
} from "rxjs"
|
||||
|
||||
import { configuration } from "~/_"
|
||||
@@ -45,14 +47,29 @@ import {
|
||||
|
||||
import { fetchSitemap } from "../sitemap"
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Helper types
|
||||
* ------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Setup options
|
||||
*/
|
||||
interface SetupOptions {
|
||||
document$: Subject<Document> /* Document subject */
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Functions
|
||||
* ------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Set up version selector
|
||||
*
|
||||
* @param options - Options
|
||||
*/
|
||||
export function setupVersionSelector(): void {
|
||||
export function setupVersionSelector(
|
||||
{ document$ }: SetupOptions
|
||||
): void {
|
||||
const config = configuration()
|
||||
const versions$ = requestJSON<Version[]>(
|
||||
new URL("../versions.json", config.base)
|
||||
@@ -115,17 +132,25 @@ export function setupVersionSelector(): void {
|
||||
.subscribe(([versions, current]) => {
|
||||
const topic = getElement(".md-header__topic")
|
||||
topic.appendChild(renderVersionSelector(versions, current))
|
||||
})
|
||||
|
||||
/* Integrate outdated version banner with instant loading */
|
||||
document$.pipe(switchMapTo(current$))
|
||||
.subscribe(current => {
|
||||
|
||||
/* Check if version state was already determined */
|
||||
if (__md_get("__outdated", sessionStorage) === null) {
|
||||
let outdated = __md_get("__outdated", sessionStorage)
|
||||
if (outdated === null) {
|
||||
const latest = config.version?.default || "latest"
|
||||
const outdated = !current.aliases.includes(latest)
|
||||
outdated = !current.aliases.includes(latest)
|
||||
|
||||
/* Persist version state in session storage */
|
||||
__md_set("__outdated", outdated, sessionStorage)
|
||||
if (outdated)
|
||||
for (const warning of getComponentElements("outdated"))
|
||||
warning.hidden = false
|
||||
}
|
||||
|
||||
/* Unhide outdated version banner */
|
||||
if (outdated)
|
||||
for (const warning of getComponentElements("outdated"))
|
||||
warning.hidden = false
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user