Fixed following of link if search input is focused

This commit is contained in:
squidfunk 2017-04-23 20:45:23 +02:00 committed by Martin Donath
parent f6238f3bae
commit 7ae0a42654
4 changed files with 19 additions and 17 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -149,7 +149,7 @@
{% endblock %} {% endblock %}
</div> </div>
{% block scripts %} {% block scripts %}
<script src="{{ base_url }}/assets/javascripts/application-7018102a8b.js"></script> <script src="{{ base_url }}/assets/javascripts/application-6b599127bc.js"></script>
<script>app.initialize({url:{base:"{{ base_url }}"}})</script> <script>app.initialize({url:{base:"{{ base_url }}"}})</script>
{% for path in extra_javascript %} {% for path in extra_javascript %}
<script src="{{ path }}"></script> <script src="{{ path }}"></script>

View File

@ -203,8 +203,8 @@ function initialize(config) { // eslint-disable-line func-style
} }
})) }))
/* Listener: keyboard handlers */ /* Listener: keyboard handlers */ // eslint-disable-next-line complexity
new Material.Event.Listener(window, "keydown", ev => { new Material.Event.Listener(window, "keydown", ev => { // TODO: split up into component to reduce complexity
const toggle = document.querySelector("[data-md-toggle=search]") const toggle = document.querySelector("[data-md-toggle=search]")
if (!(toggle instanceof HTMLInputElement)) if (!(toggle instanceof HTMLInputElement))
throw new ReferenceError throw new ReferenceError
@ -221,9 +221,21 @@ function initialize(config) { // eslint-disable-line func-style
/* Enter: prevent form submission */ /* Enter: prevent form submission */
if (ev.keyCode === 13) { if (ev.keyCode === 13) {
if (query === document.activeElement) if (query === document.activeElement) {
ev.preventDefault() ev.preventDefault()
/* Go to current active/focused link */
const focus = document.querySelector(
"[data-md-component=search] [href][data-md-state=active]")
if (focus instanceof HTMLLinkElement)
window.location = focus.getAttribute("href")
/* Close search */
toggle.checked = false
toggle.dispatchEvent(new CustomEvent("change"))
query.blur()
}
/* Escape: close search */ /* Escape: close search */
} else if (ev.keyCode === 27) { } else if (ev.keyCode === 27) {
toggle.checked = false toggle.checked = false
@ -299,16 +311,6 @@ function initialize(config) { // eslint-disable-line func-style
} }
}).listen() }).listen()
/* Listener: fix unclickable toggle due to blur handler */
new Material.Event.MatchMedia("(min-width: 960px)",
new Material.Event.Listener("[data-md-toggle=search]", "click",
ev => ev.stopPropagation()))
/* Listener: prevent search from closing when clicking */
new Material.Event.MatchMedia("(min-width: 960px)",
new Material.Event.Listener("[data-md-component=search]", "click",
ev => ev.stopPropagation()))
/* Retrieve facts for the given repository type */ /* Retrieve facts for the given repository type */
;(() => { ;(() => {
const el = document.querySelector("[data-md-source]") const el = document.querySelector("[data-md-source]")