Linkify sidebar headings for sibling items
Also adjust CSS so this doesn't produce excess padding/margin.
This commit is contained in:
parent
4c55c8362d
commit
e27ebb5dff
4 changed files with 33 additions and 19 deletions
|
@ -472,6 +472,7 @@ nav.sub {
|
|||
}
|
||||
.block ul, .block li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
@ -502,8 +503,6 @@ nav.sub {
|
|||
font-weight: 500;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.sidebar-links,
|
||||
|
|
|
@ -559,7 +559,15 @@ function hideThemeButtonState() {
|
|||
others.appendChild(div);
|
||||
}
|
||||
|
||||
function block(shortty, longty) {
|
||||
/**
|
||||
* Append to the sidebar a "block" of links - a heading along with a list (`<ul>`) of items.
|
||||
*
|
||||
* @param {string} shortty - A short type name, like "primitive", "mod", or "macro"
|
||||
* @param {string} id - The HTML id of the corresponding section on the module page.
|
||||
* @param {string} longty - A long, capitalized, plural name, like "Primitive Types",
|
||||
* "Modules", or "Macros".
|
||||
*/
|
||||
function block(shortty, id, longty) {
|
||||
var filtered = items[shortty];
|
||||
if (!filtered) {
|
||||
return;
|
||||
|
@ -568,7 +576,7 @@ function hideThemeButtonState() {
|
|||
var div = document.createElement("div");
|
||||
div.className = "block " + shortty;
|
||||
var h3 = document.createElement("h3");
|
||||
h3.textContent = longty;
|
||||
h3.innerHTML = `<a href="index.html#${id}">${longty}</a>`;
|
||||
div.appendChild(h3);
|
||||
var ul = document.createElement("ul");
|
||||
|
||||
|
@ -607,20 +615,20 @@ function hideThemeButtonState() {
|
|||
|
||||
var isModule = hasClass(document.body, "mod");
|
||||
if (!isModule) {
|
||||
block("primitive", "Primitive Types");
|
||||
block("mod", "Modules");
|
||||
block("macro", "Macros");
|
||||
block("struct", "Structs");
|
||||
block("enum", "Enums");
|
||||
block("union", "Unions");
|
||||
block("constant", "Constants");
|
||||
block("static", "Statics");
|
||||
block("trait", "Traits");
|
||||
block("fn", "Functions");
|
||||
block("type", "Type Definitions");
|
||||
block("foreigntype", "Foreign Types");
|
||||
block("keyword", "Keywords");
|
||||
block("traitalias", "Trait Aliases");
|
||||
block("primitive", "primitives", "Primitive Types");
|
||||
block("mod", "modules", "Modules");
|
||||
block("macro", "macros", "Macros");
|
||||
block("struct", "structs", "Structs");
|
||||
block("enum", "enums", "Enums");
|
||||
block("union", "unions", "Unions");
|
||||
block("constant", "constants", "Constants");
|
||||
block("static", "static", "Statics");
|
||||
block("trait", "traits", "Traits");
|
||||
block("fn", "functions", "Functions");
|
||||
block("type", "types", "Type Definitions");
|
||||
block("foreigntype", "foreign-types", "Foreign Types");
|
||||
block("keyword", "keywords", "Keywords");
|
||||
block("traitalias", "trait-aliases", "Trait Aliases");
|
||||
}
|
||||
|
||||
// `crates{version}.js` should always be loaded before this script, so we can use
|
||||
|
|
|
@ -39,4 +39,4 @@ assert-position: ("#method\.must_use", {"y": 45})
|
|||
// Check that the bottom-most item on the sidebar menu can be scrolled fully into view.
|
||||
click: ".sidebar-menu-toggle"
|
||||
scroll-to: ".block.keyword li:nth-child(1)"
|
||||
assert-position: (".block.keyword li:nth-child(1)", {"y": 542.96875})
|
||||
assert-position: (".block.keyword li:nth-child(1)", {"y": 542.234375})
|
||||
|
|
|
@ -78,3 +78,10 @@ assert-text: ("#functions + .item-table .item-left > a", "foo")
|
|||
// Links to trait implementations in the sidebar should not wrap even if they are long.
|
||||
goto: file://|DOC_PATH|/lib2/struct.HasALongTraitWithParams.html
|
||||
assert-property: (".sidebar-links a", {"offsetHeight": 29})
|
||||
|
||||
// Test that clicking on of the "In <module>" headings in the sidebar links to the
|
||||
// appropriate anchor in index.html.
|
||||
goto: file://|DOC_PATH|/test_docs/struct.Foo.html
|
||||
click: ".block.mod h3 a"
|
||||
// PAGE: index.html
|
||||
assert-css: ("#modules", {"background-color": "rgb(253, 255, 211)"})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue