mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-11-27 17:00:54 +01:00
Fixed uncaught reference error when search plugin is disabled
This commit is contained in:
parent
4b5c45c656
commit
4f5677d584
File diff suppressed because one or more lines are too long
1
material/assets/javascripts/application.cb27f861.js
Normal file
1
material/assets/javascripts/application.cb27f861.js
Normal file
File diff suppressed because one or more lines are too long
@ -167,7 +167,7 @@
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% block scripts %}
|
||||
<script src="{{ base_url }}/assets/javascripts/application.5f9a6f1b.js"></script>
|
||||
<script src="{{ base_url }}/assets/javascripts/application.cb27f861.js"></script>
|
||||
{% if lang.t("search.language") != "en" %}
|
||||
{% set languages = lang.t("search.language").split(",") %}
|
||||
{% if languages | length and languages[0] != "" %}
|
||||
|
@ -1 +1 @@
|
||||
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","{{ config.google_analytics[0] }}","{{ config.google_analytics[1] }}"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})});var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})</script>
|
||||
<script>!function(e,a,t,n,o,c,i){e.GoogleAnalyticsObject=o,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),i=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",i.parentNode.insertBefore(c,i)}(window,document,"script",0,"ga"),ga("create","{{ config.google_analytics[0] }}","{{ config.google_analytics[1] }}"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");if(Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var a=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",a,e.href)})}),document.forms.search){var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}</script>
|
||||
|
@ -276,27 +276,174 @@ function initialize(config) { // eslint-disable-line func-style
|
||||
"[data-md-component=navigation] [data-md-toggle]", "change",
|
||||
new Material.Nav.Scrolling("[data-md-component=navigation] nav")))
|
||||
|
||||
/* Component: search body lock for mobile */
|
||||
new Material.Event.MatchMedia("(max-width: 959px)",
|
||||
new Material.Event.Listener("[data-md-toggle=search]", "change",
|
||||
new Material.Search.Lock("[data-md-toggle=search]")))
|
||||
/* Initialize search, if available */
|
||||
if (document.querySelector("[data-md-component=search]")) {
|
||||
|
||||
/* Component: search results */
|
||||
new Material.Event.Listener("[data-md-component=query]", [
|
||||
"focus", "keyup", "change"
|
||||
], new Material.Search.Result("[data-md-component=result]", () => {
|
||||
return fetch(`${config.url.base}/${
|
||||
config.version < "0.17" ? "mkdocs" : "search"
|
||||
}/search_index.json`, {
|
||||
credentials: "same-origin"
|
||||
}).then(response => response.json())
|
||||
.then(data => {
|
||||
return data.docs.map(doc => {
|
||||
doc.location = config.url.base + doc.location
|
||||
return doc
|
||||
/* Component: search body lock for mobile */
|
||||
new Material.Event.MatchMedia("(max-width: 959px)",
|
||||
new Material.Event.Listener("[data-md-toggle=search]", "change",
|
||||
new Material.Search.Lock("[data-md-toggle=search]")))
|
||||
|
||||
/* Component: search results */
|
||||
new Material.Event.Listener("[data-md-component=query]", [
|
||||
"focus", "keyup", "change"
|
||||
], new Material.Search.Result("[data-md-component=result]", () => {
|
||||
return fetch(`${config.url.base}/${
|
||||
config.version < "0.17" ? "mkdocs" : "search"
|
||||
}/search_index.json`, {
|
||||
credentials: "same-origin"
|
||||
}).then(response => response.json())
|
||||
.then(data => {
|
||||
return data.docs.map(doc => {
|
||||
doc.location = config.url.base + doc.location
|
||||
return doc
|
||||
})
|
||||
})
|
||||
})
|
||||
})).listen()
|
||||
})).listen()
|
||||
|
||||
/* Listener: focus input after form reset */
|
||||
new Material.Event.Listener("[data-md-component=reset]", "click", () => {
|
||||
setTimeout(() => {
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
query.focus()
|
||||
}, 10)
|
||||
}).listen()
|
||||
|
||||
/* Listener: focus input after opening search */
|
||||
new Material.Event.Listener("[data-md-toggle=search]", "change", ev => {
|
||||
setTimeout(toggle => {
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (toggle.checked) {
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
query.focus()
|
||||
}
|
||||
}, 400, ev.target)
|
||||
}).listen()
|
||||
|
||||
/* Listener: open search on focus */
|
||||
new Material.Event.MatchMedia("(min-width: 960px)",
|
||||
new Material.Event.Listener("[data-md-component=query]", "focus", () => {
|
||||
const toggle = document.querySelector("[data-md-toggle=search]")
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (!toggle.checked) {
|
||||
toggle.checked = true
|
||||
toggle.dispatchEvent(new CustomEvent("change"))
|
||||
}
|
||||
}))
|
||||
|
||||
/* Listener: keyboard handlers */ // eslint-disable-next-line complexity
|
||||
new Material.Event.Listener(window, "keydown", ev => { // TODO: split up into component to reduce complexity
|
||||
const toggle = document.querySelector("[data-md-toggle=search]")
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
|
||||
/* Abort if meta key (macOS) or ctrl key (Windows) is pressed */
|
||||
if (ev.metaKey || ev.ctrlKey)
|
||||
return
|
||||
|
||||
/* Search is open */
|
||||
if (toggle.checked) {
|
||||
|
||||
/* Enter: prevent form submission */
|
||||
if (ev.keyCode === 13) {
|
||||
if (query === document.activeElement) {
|
||||
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 or Tab: close search */
|
||||
} else if (ev.keyCode === 9 || ev.keyCode === 27) {
|
||||
toggle.checked = false
|
||||
toggle.dispatchEvent(new CustomEvent("change"))
|
||||
query.blur()
|
||||
|
||||
/* Horizontal arrows and backspace: focus input */
|
||||
} else if ([8, 37, 39].indexOf(ev.keyCode) !== -1) {
|
||||
if (query !== document.activeElement)
|
||||
query.focus()
|
||||
|
||||
/* Vertical arrows: select previous or next search result */
|
||||
} else if ([38, 40].indexOf(ev.keyCode) !== -1) {
|
||||
const key = ev.keyCode
|
||||
|
||||
/* Retrieve all results */
|
||||
const links = Array.prototype.slice.call(
|
||||
document.querySelectorAll(
|
||||
"[data-md-component=query], [data-md-component=search] [href]"))
|
||||
|
||||
/* Retrieve current active/focused result */
|
||||
const focus = links.find(link => {
|
||||
if (!(link instanceof HTMLElement))
|
||||
throw new ReferenceError
|
||||
return link.dataset.mdState === "active"
|
||||
})
|
||||
if (focus)
|
||||
focus.dataset.mdState = ""
|
||||
|
||||
/* Calculate index depending on direction, add length to form ring */
|
||||
const index = Math.max(0, (
|
||||
links.indexOf(focus) + links.length + (key === 38 ? -1 : +1)
|
||||
) % links.length)
|
||||
|
||||
/* Set active state and focus */
|
||||
if (links[index]) {
|
||||
links[index].dataset.mdState = "active"
|
||||
links[index].focus()
|
||||
}
|
||||
|
||||
/* Prevent scrolling of page */
|
||||
ev.preventDefault()
|
||||
ev.stopPropagation()
|
||||
|
||||
/* Return false prevents the cursor position from changing */
|
||||
return false
|
||||
}
|
||||
|
||||
/* Search is closed and we're not inside a form */
|
||||
} else if (document.activeElement && !document.activeElement.form) {
|
||||
|
||||
/* F/S: Open search if not in input field */
|
||||
if (ev.keyCode === 70 || ev.keyCode === 83) {
|
||||
query.focus()
|
||||
ev.preventDefault()
|
||||
}
|
||||
}
|
||||
}).listen()
|
||||
|
||||
/* Listener: focus query if in search is open and character is typed */
|
||||
new Material.Event.Listener(window, "keypress", () => {
|
||||
const toggle = document.querySelector("[data-md-toggle=search]")
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (toggle.checked) {
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (query !== document.activeElement)
|
||||
query.focus()
|
||||
}
|
||||
}).listen()
|
||||
}
|
||||
|
||||
/* Listener: handle tabbing context for better accessibility */
|
||||
new Material.Event.Listener(document.body, "keydown", ev => {
|
||||
@ -337,149 +484,6 @@ function initialize(config) { // eslint-disable-line func-style
|
||||
}
|
||||
}))
|
||||
|
||||
/* Listener: focus input after form reset */
|
||||
new Material.Event.Listener("[data-md-component=reset]", "click", () => {
|
||||
setTimeout(() => {
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
query.focus()
|
||||
}, 10)
|
||||
}).listen()
|
||||
|
||||
/* Listener: focus input after opening search */
|
||||
new Material.Event.Listener("[data-md-toggle=search]", "change", ev => {
|
||||
setTimeout(toggle => {
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (toggle.checked) {
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
query.focus()
|
||||
}
|
||||
}, 400, ev.target)
|
||||
}).listen()
|
||||
|
||||
/* Listener: open search on focus */
|
||||
new Material.Event.MatchMedia("(min-width: 960px)",
|
||||
new Material.Event.Listener("[data-md-component=query]", "focus", () => {
|
||||
const toggle = document.querySelector("[data-md-toggle=search]")
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (!toggle.checked) {
|
||||
toggle.checked = true
|
||||
toggle.dispatchEvent(new CustomEvent("change"))
|
||||
}
|
||||
}))
|
||||
|
||||
/* Listener: keyboard handlers */ // eslint-disable-next-line complexity
|
||||
new Material.Event.Listener(window, "keydown", ev => { // TODO: split up into component to reduce complexity
|
||||
const toggle = document.querySelector("[data-md-toggle=search]")
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
|
||||
/* Abort if meta key (macOS) or ctrl key (Windows) is pressed */
|
||||
if (ev.metaKey || ev.ctrlKey)
|
||||
return
|
||||
|
||||
/* Search is open */
|
||||
if (toggle.checked) {
|
||||
|
||||
/* Enter: prevent form submission */
|
||||
if (ev.keyCode === 13) {
|
||||
if (query === document.activeElement) {
|
||||
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 or Tab: close search */
|
||||
} else if (ev.keyCode === 9 || ev.keyCode === 27) {
|
||||
toggle.checked = false
|
||||
toggle.dispatchEvent(new CustomEvent("change"))
|
||||
query.blur()
|
||||
|
||||
/* Horizontal arrows and backspace: focus input */
|
||||
} else if ([8, 37, 39].indexOf(ev.keyCode) !== -1) {
|
||||
if (query !== document.activeElement)
|
||||
query.focus()
|
||||
|
||||
/* Vertical arrows: select previous or next search result */
|
||||
} else if ([38, 40].indexOf(ev.keyCode) !== -1) {
|
||||
const key = ev.keyCode
|
||||
|
||||
/* Retrieve all results */
|
||||
const links = Array.prototype.slice.call(
|
||||
document.querySelectorAll(
|
||||
"[data-md-component=query], [data-md-component=search] [href]"))
|
||||
|
||||
/* Retrieve current active/focused result */
|
||||
const focus = links.find(link => {
|
||||
if (!(link instanceof HTMLElement))
|
||||
throw new ReferenceError
|
||||
return link.dataset.mdState === "active"
|
||||
})
|
||||
if (focus)
|
||||
focus.dataset.mdState = ""
|
||||
|
||||
/* Calculate index depending on direction, add length to form ring */
|
||||
const index = Math.max(0, (
|
||||
links.indexOf(focus) + links.length + (key === 38 ? -1 : +1)
|
||||
) % links.length)
|
||||
|
||||
/* Set active state and focus */
|
||||
if (links[index]) {
|
||||
links[index].dataset.mdState = "active"
|
||||
links[index].focus()
|
||||
}
|
||||
|
||||
/* Prevent scrolling of page */
|
||||
ev.preventDefault()
|
||||
ev.stopPropagation()
|
||||
|
||||
/* Return false prevents the cursor position from changing */
|
||||
return false
|
||||
}
|
||||
|
||||
/* Search is closed and we're not inside a form */
|
||||
} else if (document.activeElement && !document.activeElement.form) {
|
||||
|
||||
/* F/S: Open search if not in input field */
|
||||
if (ev.keyCode === 70 || ev.keyCode === 83) {
|
||||
query.focus()
|
||||
ev.preventDefault()
|
||||
}
|
||||
}
|
||||
}).listen()
|
||||
|
||||
/* Listener: focus query if in search is open and character is typed */
|
||||
new Material.Event.Listener(window, "keypress", () => {
|
||||
const toggle = document.querySelector("[data-md-toggle=search]")
|
||||
if (!(toggle instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (toggle.checked) {
|
||||
const query = document.querySelector("[data-md-component=query]")
|
||||
if (!(query instanceof HTMLInputElement))
|
||||
throw new ReferenceError
|
||||
if (query !== document.activeElement)
|
||||
query.focus()
|
||||
}
|
||||
}).listen()
|
||||
|
||||
/* Retrieve facts for the given repository type */
|
||||
;(() => {
|
||||
const el = document.querySelector("[data-md-source]")
|
||||
|
@ -49,11 +49,13 @@
|
||||
});
|
||||
|
||||
/* Register handler to log search on blur */
|
||||
var query = document.forms.search.query;
|
||||
query.addEventListener("blur", function() {
|
||||
if (this.value) {
|
||||
var path = document.location.pathname;
|
||||
ga("send", "pageview", path + "?q=" + this.value);
|
||||
}
|
||||
});
|
||||
if (document.forms.search) {
|
||||
var query = document.forms.search.query;
|
||||
query.addEventListener("blur", function() {
|
||||
if (this.value) {
|
||||
var path = document.location.pathname;
|
||||
ga("send", "pageview", path + "?q=" + this.value);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user