mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-06-14 11:52:32 +03: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 %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% block scripts %}
|
{% 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" %}
|
{% if lang.t("search.language") != "en" %}
|
||||||
{% set languages = lang.t("search.language").split(",") %}
|
{% set languages = lang.t("search.language").split(",") %}
|
||||||
{% if languages | length and languages[0] != "" %}
|
{% 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",
|
"[data-md-component=navigation] [data-md-toggle]", "change",
|
||||||
new Material.Nav.Scrolling("[data-md-component=navigation] nav")))
|
new Material.Nav.Scrolling("[data-md-component=navigation] nav")))
|
||||||
|
|
||||||
/* Component: search body lock for mobile */
|
/* Initialize search, if available */
|
||||||
new Material.Event.MatchMedia("(max-width: 959px)",
|
if (document.querySelector("[data-md-component=search]")) {
|
||||||
new Material.Event.Listener("[data-md-toggle=search]", "change",
|
|
||||||
new Material.Search.Lock("[data-md-toggle=search]")))
|
|
||||||
|
|
||||||
/* Component: search results */
|
/* Component: search body lock for mobile */
|
||||||
new Material.Event.Listener("[data-md-component=query]", [
|
new Material.Event.MatchMedia("(max-width: 959px)",
|
||||||
"focus", "keyup", "change"
|
new Material.Event.Listener("[data-md-toggle=search]", "change",
|
||||||
], new Material.Search.Result("[data-md-component=result]", () => {
|
new Material.Search.Lock("[data-md-toggle=search]")))
|
||||||
return fetch(`${config.url.base}/${
|
|
||||||
config.version < "0.17" ? "mkdocs" : "search"
|
/* Component: search results */
|
||||||
}/search_index.json`, {
|
new Material.Event.Listener("[data-md-component=query]", [
|
||||||
credentials: "same-origin"
|
"focus", "keyup", "change"
|
||||||
}).then(response => response.json())
|
], new Material.Search.Result("[data-md-component=result]", () => {
|
||||||
.then(data => {
|
return fetch(`${config.url.base}/${
|
||||||
return data.docs.map(doc => {
|
config.version < "0.17" ? "mkdocs" : "search"
|
||||||
doc.location = config.url.base + doc.location
|
}/search_index.json`, {
|
||||||
return doc
|
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 */
|
/* Listener: handle tabbing context for better accessibility */
|
||||||
new Material.Event.Listener(document.body, "keydown", ev => {
|
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 */
|
/* Retrieve facts for the given repository type */
|
||||||
;(() => {
|
;(() => {
|
||||||
const el = document.querySelector("[data-md-source]")
|
const el = document.querySelector("[data-md-source]")
|
||||||
|
@ -49,11 +49,13 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
/* Register handler to log search on blur */
|
/* Register handler to log search on blur */
|
||||||
var query = document.forms.search.query;
|
if (document.forms.search) {
|
||||||
query.addEventListener("blur", function() {
|
var query = document.forms.search.query;
|
||||||
if (this.value) {
|
query.addEventListener("blur", function() {
|
||||||
var path = document.location.pathname;
|
if (this.value) {
|
||||||
ga("send", "pageview", path + "?q=" + this.value);
|
var path = document.location.pathname;
|
||||||
}
|
ga("send", "pageview", path + "?q=" + this.value);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
Reference in New Issue
Block a user