rustdoc: add test cases, and fix, search tabs

This commit is contained in:
Michael Howell 2023-09-19 19:40:36 -07:00
parent 3b9e0feff4
commit 9fbee7dcc5
3 changed files with 100 additions and 7 deletions

View File

@ -1355,6 +1355,7 @@ a.tooltip:hover::after {
#search-tabs .count {
font-size: 1rem;
font-variant-numeric: tabular-nums;
color: var(--search-tab-title-count-color);
}
@ -1637,6 +1638,13 @@ However, it's not needed with smaller screen width because the doc/code block is
/* Media Queries */
/* Make sure all the buttons line wrap at the same time */
@media (max-width: 850px) {
#search-tabs .count {
display: block;
}
}
/*
WARNING: RUSTDOC_MOBILE_BREAKPOINT MEDIA QUERY
If you update this line, then you also need to update the line with the same warning
@ -1764,10 +1772,6 @@ in src-script.js
display: none !important;
}
#search-tabs .count {
display: block;
}
#main-content > details.toggle > summary::before,
#main-content > div > details.toggle > summary::before {
left: -11px;

View File

@ -2334,11 +2334,16 @@ ${item.displayPath}<span class="${type}">${name}</span>\
}
function makeTabHeader(tabNb, text, nbElems) {
// https://blog.horizon-eda.org/misc/2020/02/19/ui.html
const fmtNbElems =
nbElems < 10 ? `\u{2007}(${nbElems})\u{2007}\u{2007}` :
nbElems < 100 ? `\u{2007}(${nbElems})\u{2007}` :
`\u{2007}(${nbElems})`;
if (searchState.currentTab === tabNb) {
return "<button class=\"selected\">" + text +
" <span class=\"count\">(" + nbElems + ")</span></button>";
"<span class=\"count\">" + fmtNbElems + "</span></button>";
}
return "<button>" + text + " <span class=\"count\">(" + nbElems + ")</span></button>";
return "<button>" + text + "<span class=\"count\">" + fmtNbElems + "</span></button>";
}
/**

View File

@ -1,5 +1,5 @@
// Checking the colors of the search tab headers.
go-to: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html?search=something"
go-to: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html?search=foo"
show-text: true
define-function: (
@ -74,3 +74,87 @@ call-function: ("check-colors", {
"border_top_selected": "2px solid #0089ff",
"border_top_hover": "2px solid #0089ff",
})
// set size wide enough that the text is in a single row
set-window-size: (851, 600)
// Check the size and count in tabs
assert-text: ("#search-tabs > button:nth-child(1) > .count", "(23)")
assert-text: ("#search-tabs > button:nth-child(2) > .count", "(4)")
assert-text: ("#search-tabs > button:nth-child(3) > .count", "(0)")
store-property: ("#search-tabs > button:nth-child(1)", {"offsetWidth": buttonWidth})
assert-property: ("#search-tabs > button:nth-child(2)", {"offsetWidth": |buttonWidth|})
assert-property: ("#search-tabs > button:nth-child(3)", {"offsetWidth": |buttonWidth|})
store-property: ("#search-tabs > button:nth-child(1) > .count", {"offsetWidth": countWidth})
assert-property: ("#search-tabs > button:nth-child(2) > .count", {"offsetWidth": |countWidth|})
assert-property: ("#search-tabs > button:nth-child(3) > .count", {"offsetWidth": |countWidth|})
// Check that counts are in a row with each other
compare-elements-position: (
"#search-tabs > button:nth-child(1) > .count",
"#search-tabs > button:nth-child(2) > .count",
("y")
)
compare-elements-position: (
"#search-tabs > button:nth-child(2) > .count",
"#search-tabs > button:nth-child(3) > .count",
("y")
)
// Check that counts are beside the titles and haven't wrapped
compare-elements-position-near: (
"#search-tabs > button:nth-child(1)",
"#search-tabs > button:nth-child(1) > .count",
{"y": 8}
)
compare-elements-position-near: (
"#search-tabs > button:nth-child(2)",
"#search-tabs > button:nth-child(2) > .count",
{"y": 8}
)
compare-elements-position-near: (
"#search-tabs > button:nth-child(2)",
"#search-tabs > button:nth-child(2) > .count",
{"y": 8}
)
// Set size narrow enough that they wrap.
// When I tested it, it wrapped at 811px, but I added some fudge factor to ensure it
// doesn't prematurely wrap with slightly different font kerning or whatever, with a
// @media query
set-window-size: (850, 600)
// all counts and buttons still have same size
store-property: ("#search-tabs > button:nth-child(1)", {"offsetWidth": buttonWidth})
assert-property: ("#search-tabs > button:nth-child(2)", {"offsetWidth": |buttonWidth|})
assert-property: ("#search-tabs > button:nth-child(3)", {"offsetWidth": |buttonWidth|})
store-property: ("#search-tabs > button:nth-child(1) > .count", {"offsetWidth": countWidth})
assert-property: ("#search-tabs > button:nth-child(2) > .count", {"offsetWidth": |countWidth|})
assert-property: ("#search-tabs > button:nth-child(3) > .count", {"offsetWidth": |countWidth|})
// Check that counts are still in a row with each other
compare-elements-position: (
"#search-tabs > button:nth-child(1) > .count",
"#search-tabs > button:nth-child(2) > .count",
("y")
)
compare-elements-position: (
"#search-tabs > button:nth-child(2) > .count",
"#search-tabs > button:nth-child(3) > .count",
("y")
)
// Check that counts are NOT beside the titles; now they have wrapped
compare-elements-position-near-false: (
"#search-tabs > button:nth-child(1)",
"#search-tabs > button:nth-child(1) > .count",
{"y": 8}
)
compare-elements-position-near-false: (
"#search-tabs > button:nth-child(2)",
"#search-tabs > button:nth-child(2) > .count",
{"y": 8}
)
compare-elements-position-near-false: (
"#search-tabs > button:nth-child(2)",
"#search-tabs > button:nth-child(2) > .count",
{"y": 8}
)