Skip to content

Commit

Permalink
Rollup merge of #115988 - notriddle:notriddle/search-tab-layout, r=Gu…
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeGomez authored Sep 20, 2023
2 parents c5c4e18 + 66e0483 commit c535041
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 7 deletions.
12 changes: 8 additions & 4 deletions src/librustdoc/html/static/css/rustdoc.css
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
13 changes: 11 additions & 2 deletions src/librustdoc/html/static/js/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -2334,11 +2334,20 @@ ${item.displayPath}<span class="${type}">${name}</span>\
}

function makeTabHeader(tabNb, text, nbElems) {
// https://blog.horizon-eda.org/misc/2020/02/19/ui.html
//
// CSS runs with `font-variant-numeric: tabular-nums` to ensure all
// digits are the same width. \u{2007} is a Unicode space character
// that is defined to be the same width as a digit.
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>";
}

/**
Expand Down
86 changes: 85 additions & 1 deletion tests/rustdoc-gui/search-tab.goml
Original file line number Diff line number Diff line change
@@ -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: (
Expand Down Expand Up @@ -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}
)

0 comments on commit c535041

Please sign in to comment.