Skip to content

Commit

Permalink
Fixed code blocks not selectable via keyboard after content tabs switch
Browse files Browse the repository at this point in the history
  • Loading branch information
squidfunk committed Feb 15, 2021
1 parent c5cbbd9 commit ad27da1
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 9 deletions.
2 changes: 0 additions & 2 deletions material/assets/javascripts/bundle.21e94a31.min.js

This file was deleted.

1 change: 0 additions & 1 deletion material/assets/javascripts/bundle.21e94a31.min.js.map

This file was deleted.

2 changes: 2 additions & 0 deletions material/assets/javascripts/bundle.9a5a6e7c.min.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions material/assets/javascripts/bundle.9a5a6e7c.min.js.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions material/assets/manifest.json
@@ -1,6 +1,6 @@
{
"assets/javascripts/bundle.js": "assets/javascripts/bundle.21e94a31.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.21e94a31.min.js.map",
"assets/javascripts/bundle.js": "assets/javascripts/bundle.9a5a6e7c.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.9a5a6e7c.min.js.map",
"assets/javascripts/vendor.js": "assets/javascripts/vendor.00ecb175.min.js",
"assets/javascripts/vendor.js.map": "assets/javascripts/vendor.00ecb175.min.js.map",
"assets/javascripts/worker/search.js": "assets/javascripts/worker/search.3f4c5856.min.js",
Expand Down
2 changes: 1 addition & 1 deletion material/base.html
Expand Up @@ -217,7 +217,7 @@ <h1>{{ page.title | d(config.site_name, true)}}</h1>
{% endblock %}
{% block scripts %}
<script src="{{ 'assets/javascripts/vendor.00ecb175.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.21e94a31.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.9a5a6e7c.min.js' | url }}"></script>
{% for path in config["extra_javascript"] %}
<script src="{{ path | url }}"></script>
{% endfor %}
Expand Down
37 changes: 34 additions & 3 deletions src/assets/javascripts/components/content/code/index.ts
Expand Up @@ -21,11 +21,20 @@
*/

import ClipboardJS from "clipboard"
import { Observable, Subject } from "rxjs"
import {
NEVER,
Observable,
Subject,
fromEvent,
merge,
of
} from "rxjs"
import {
distinctUntilKeyChanged,
finalize,
map,
share,
switchMap,
tap,
withLatestFrom
} from "rxjs/operators"
Expand All @@ -35,6 +44,7 @@ import {
Viewport,
getElementContentSize,
getElementSize,
getElements,
watchMedia
} from "~/browser"
import { renderClipboardButton } from "~/templates"
Expand Down Expand Up @@ -86,6 +96,9 @@ let index = 0
/**
* Watch code block
*
* This function will monitor size changes of the viewport, as well as switches
* of content tabs with embedded code blocks, as both may trigger overflow.
*
* @param el - Code block element
* @param options - Options
*
Expand All @@ -94,9 +107,27 @@ let index = 0
export function watchCodeBlock(
el: HTMLElement, { viewport$ }: WatchOptions
): Observable<CodeBlock> {
return viewport$
const container$ = of(el)
.pipe(
switchMap(child => {
const container = child.closest("[data-tabs]")
if (container instanceof HTMLElement) {
return merge(
...getElements("input", container)
.map(input => fromEvent(input, "change"))
)
}
return NEVER
}),
share()
)

/* Check overflow on resize and tab change */
return merge(
viewport$.pipe(distinctUntilKeyChanged("size")),
container$
)
.pipe(
distinctUntilKeyChanged("size"),
map(() => {
const visible = getElementSize(el)
const content = getElementContentSize(el)
Expand Down

0 comments on commit ad27da1

Please sign in to comment.