Automatically focus and bring up keyboard on touch devices

This commit is contained in:
squidfunk 2023-08-10 14:40:26 +02:00
parent 0be6172765
commit 50f455ec09
No known key found for this signature in database
GPG Key ID: 5ED40BC4F9C436DF
4 changed files with 16 additions and 7 deletions

View File

@ -250,7 +250,7 @@
</script>
{% endblock %}
{% block scripts %}
<script src="{{ 'assets/javascripts/bundle.4e31edb1.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.9e673e97.min.js' | url }}"></script>
{% for script in config.extra_javascript %}
{% if script.path %}
{{ script | script_tag }}

View File

@ -39,6 +39,7 @@ import {
} from "rxjs"
import {
getElement,
getLocation,
setToggle,
watchElementFocus,
@ -186,6 +187,14 @@ export function mountSearchQuery(
)
.subscribe(() => el.focus())
// Focus search query on label click - note that this is necessary to bring
// up the keyboard on iOS and other mobile platforms, as the search dialog is
// not visible at first, and programatically focusing an input element must
// be triggered by a user interaction - see https://t.ly/Cb30n
const label = getElement("header [for=__search]")
fromEvent(label, "click")
.subscribe(() => el.focus())
/* Create and return component */
return watchSearchQuery(el, { worker$ })
.pipe(