Add option to collapse automatically implementors

This commit is contained in:
Guillaume Gomez 2020-07-09 21:42:02 +02:00
parent f844ea1e56
commit 970174a1e5
2 changed files with 10 additions and 3 deletions
src/librustdoc/html

@ -1291,6 +1291,7 @@ fn settings(root_path: &str, suffix: &str) -> String {
("auto-hide-method-docs", "Auto-hide item methods' documentation", false).into(),
("auto-hide-trait-implementations", "Auto-hide trait implementations documentation", true)
.into(),
("auto-collapse-implementors", "Auto-collapse implementors", true).into(),
("go-to-only-result", "Directly go to item in search if there is only one result", false)
.into(),
("line-numbers", "Show line numbers on code examples", false).into(),

@ -2241,8 +2241,7 @@ function defocusSearchBar() {
relatedDoc = relatedDoc.nextElementSibling;
}
if ((!relatedDoc && hasClass(docblock, "docblock") === false) ||
(pageId && document.getElementById(pageId))) {
if (!relatedDoc && hasClass(docblock, "docblock") === false) {
return;
}
@ -2362,6 +2361,7 @@ function defocusSearchBar() {
(function() {
var toggle = createSimpleToggle(false);
var hideMethodDocs = getCurrentValue("rustdoc-auto-hide-method-docs") === "true";
var hideImplementors = getCurrentValue("rustdoc-auto-collapse-implementors") !== "false";
var pageId = getPageId();
var func = function(e) {
@ -2391,7 +2391,13 @@ function defocusSearchBar() {
if (hasClass(e, "impl") &&
(next.getElementsByClassName("method").length > 0 ||
next.getElementsByClassName("associatedconstant").length > 0)) {
insertAfter(toggle.cloneNode(true), e.childNodes[e.childNodes.length - 1]);
var newToggle = toggle.cloneNode(true);
insertAfter(newToggle, e.childNodes[e.childNodes.length - 1]);
// In case the option "auto-collapse implementors" is not set to false, we collapse
// all implementors.
if (hideImplementors === true && e.parentNode.id === "implementors-list") {
collapseDocs(newToggle, "hide", pageId);
}
}
};