diff options
| author | Ralf Jung <post@ralfj.de> | 2021-05-20 00:18:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-20 00:18:57 +0200 |
| commit | 42174308a277f3d3f774abbcf42f58de0288d272 (patch) | |
| tree | 4ed2c5e67a2ab120f54226c7ac248716391897df | |
| parent | a1ac37289404cef53467e09bd3ff7e13ceb18bb6 (diff) | |
| parent | 24480ded58c9867439cfabba4198e1877c1fd166 (diff) | |
| download | rust-42174308a277f3d3f774abbcf42f58de0288d272.tar.gz rust-42174308a277f3d3f774abbcf42f58de0288d272.zip | |
Rollup merge of #85169 - jsha:hoist-classes, r=GuillaumeGomez
Add method-toggle to <details> for methods The makes the code for handling "auto-hide" settings more consistent. Demo at https://hoffman-andrews.com/rust/hoist-classes/std/string/struct.String.html Fixes #84829
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 9 | ||||
| -rw-r--r-- | src/librustdoc/html/static/main.js | 16 |
2 files changed, 10 insertions, 15 deletions
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index a288b43722a..318e1b44f86 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -1352,8 +1352,11 @@ fn render_impl( } let w = if short_documented && trait_.is_some() { interesting } else { boring }; - if !doc_buffer.is_empty() { - w.write_str("<details class=\"rustdoc-toggle\" open><summary>"); + let toggled = !doc_buffer.is_empty(); + if toggled { + let method_toggle_class = + if item_type == ItemType::Method { " method-toggle" } else { "" }; + write!(w, "<details class=\"rustdoc-toggle{}\" open><summary>", method_toggle_class); } match *item.kind { clean::MethodItem(..) | clean::TyMethodItem(_) => { @@ -1453,7 +1456,7 @@ fn render_impl( } w.push_buffer(info_buffer); - if !doc_buffer.is_empty() { + if toggled { w.write_str("</summary>"); w.push_buffer(doc_buffer); w.push_str("</details>"); diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 7c00cf940c7..82049492672 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -924,24 +924,16 @@ function hideThemeButtonState() { }); } - if (hideMethodDocs) { - onEachLazy(document.getElementsByClassName("method"), function(e) { - var toggle = e.parentNode; - if (toggle) { - toggle = toggle.parentNode; - } - if (toggle && toggle.tagName === "DETAILS") { - toggle.open = false; - } - }); - } - onEachLazy(document.getElementsByTagName("details"), function (e) { var showLargeItem = !hideLargeItemContents && hasClass(e, "type-contents-toggle"); var showImplementor = !hideImplementors && hasClass(e, "implementors-toggle"); if (showLargeItem || showImplementor) { e.open = true; } + if (hideMethodDocs && hasClass(e, "method-toggle")) { + e.open = false; + } + }); var currentType = document.getElementsByClassName("type-decl")[0]; |
