Prototyped new tabbed implementation

This commit is contained in:
squidfunk
2021-08-08 10:46:45 +02:00
parent 213bebaaf7
commit 39b8416423
11 changed files with 197 additions and 40 deletions

View File

@@ -21,20 +21,25 @@
*/
import "focus-visible"
import { NEVER, Subject, defer, merge } from "rxjs"
import { NEVER, Subject, defer, fromEvent, merge, of } from "rxjs"
import {
delay,
filter,
map,
mapTo,
mergeMap,
mergeWith,
shareReplay,
switchMap
switchMap,
tap
} from "rxjs/operators"
import { configuration, feature } from "./_"
import {
at,
getElement,
getElementOrThrow,
getElements,
requestJSON,
setToggle,
watchDocument,
@@ -252,3 +257,20 @@ window.screen$ = screen$ /* Screen observable */
window.print$ = print$ /* Print mode observable */
window.alert$ = alert$ /* Alert subject */
window.component$ = component$ /* Component observable */
/* ----------------------------------------------------------------------------
* Temporary, before we integrate this into master
* ------------------------------------------------------------------------- */
document$
.pipe(
switchMap(() => of(...getElements(".tabbed-alternate > input"))
.pipe(
mergeMap(el => fromEvent(el, "change").pipe(mapTo(el))),
map(el => getElementOrThrow(`label[for=${el.id}]`))
)
)
)
.subscribe(el => {
el.scrollIntoView({ behavior: "smooth", block: "nearest" })
})