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
4 changed files with 16 additions and 7 deletions

View File

@@ -250,7 +250,7 @@
</script> </script>
{% endblock %} {% endblock %}
{% block scripts %} {% 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 %} {% for script in config.extra_javascript %}
{% if script.path %} {% if script.path %}
{{ script | script_tag }} {{ script | script_tag }}

View File

@@ -39,6 +39,7 @@ import {
} from "rxjs" } from "rxjs"
import { import {
getElement,
getLocation, getLocation,
setToggle, setToggle,
watchElementFocus, watchElementFocus,
@@ -186,6 +187,14 @@ export function mountSearchQuery(
) )
.subscribe(() => el.focus()) .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 */ /* Create and return component */
return watchSearchQuery(el, { worker$ }) return watchSearchQuery(el, { worker$ })
.pipe( .pipe(