diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 8b35ede4a02c0..0fc2473725a16 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -3379,10 +3379,10 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, let variant_id = cx.derive_id(format!("{}.{}.fields", ItemType::Variant, variant.name.as_ref().unwrap())); - write!(w, "", + write!(w, "", id = variant_id)?; - write!(w, "

Fields of {name}

\n - ", name = variant.name.as_ref().unwrap())?; + write!(w, "

Fields of {name}

", + name = variant.name.as_ref().unwrap())?; for field in &s.fields { use clean::StructFieldItem; if let StructFieldItem(ref ty) = field.inner { @@ -3394,19 +3394,18 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, ItemType::Variant.name_space(), field.name.as_ref().unwrap(), ItemType::StructField.name_space())); - write!(w, "
")?; } } - write!(w, "
\ - ", + write!(w, "\ + \ + ", id = id, ns_id = ns_id, f = field.name.as_ref().unwrap(), t = *ty)?; document(w, cx, field)?; - write!(w, "
")?; + write!(w, "
")?; } render_stability_since(w, variant, it)?; } diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 9d1a5c3837830..02229b82b8ac3 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -1886,7 +1886,7 @@ if (hasClass(relatedDoc, "stability")) { relatedDoc = relatedDoc.nextElementSibling; } - if (hasClass(relatedDoc, "docblock")) { + if (hasClass(relatedDoc, "docblock") || hasClass(relatedDoc, "sub-variant")) { var action = mode; if (action === "toggle") { if (hasClass(relatedDoc, "hidden-by-usual-hider")) { @@ -2094,15 +2094,13 @@ } var hideItemDeclarations = getCurrentValue('rustdoc-item-declarations') === "false"; - onEach(document.getElementsByClassName('docblock'), function(e) { + function buildToggleWrapper(e) { if (hasClass(e, 'autohide')) { var wrap = e.previousElementSibling; if (wrap && hasClass(wrap, 'toggle-wrapper')) { var toggle = wrap.childNodes[0]; - var extra = false; - if (e.childNodes[0].tagName === 'H3') { - extra = true; - } + var extra = e.childNodes[0].tagName === 'H3'; + e.style.display = 'none'; addClass(wrap, 'collapsed'); onEach(toggle.getElementsByClassName('inner'), function(e) { @@ -2127,6 +2125,8 @@ if (hideItemDeclarations === false) { extraClass = 'collapsed'; } + } else if (hasClass(e, "sub-variant")) { + otherMessage = ' Show fields'; } else if (hasClass(e, "non-exhaustive")) { otherMessage = ' This '; if (hasClass(e, "non-exhaustive-struct")) { @@ -2150,7 +2150,10 @@ collapseDocs(e.previousSibling.childNodes[0], "toggle"); } } - }); + } + + onEach(document.getElementsByClassName('docblock'), buildToggleWrapper); + onEach(document.getElementsByClassName('sub-variant'), buildToggleWrapper); function createToggleWrapper(tog) { var span = document.createElement('span'); diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css index c0951d9f8401e..8bcb828a5ade1 100644 --- a/src/librustdoc/html/static/rustdoc.css +++ b/src/librustdoc/html/static/rustdoc.css @@ -517,6 +517,10 @@ h4 > code, h3 > code, .invisible > code { margin-top: -13px; } +.sub-variant > div > .stability { + margin-top: initial; +} + .content .stability::before { content: '˪'; font-size: 30px; @@ -866,7 +870,23 @@ span.since { } .sub-variant, .sub-variant > h3 { - margin-top: 0 !important; + margin-top: 1px !important; +} + +#main > .sub-variant > h3 { + font-size: 15px; + margin-left: 25px; + margin-bottom: 5px; +} + +.sub-variant > div { + margin-left: 20px; + margin-bottom: 10px; +} + +.sub-variant > div > span { + display: block; + position: relative; } .toggle-label {