mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
0a0ea28f26
rustdoc: redesign toolbar and disclosure widgets Fixes #77899 Fixes #90310 ## Preview | before | after | ------ | ----- | ![image](https://github.com/user-attachments/assets/ebeec185-3a72-481d-921e-a9a885f348d9) | ![image](https://github.com/user-attachments/assets/08735a65-99d1-4523-ab77-ddb164c0a5db) | ![image](https://github.com/user-attachments/assets/ae8e0f24-49cb-445d-b9bd-cec9c57b94e7) | ![image](https://github.com/user-attachments/assets/ba484f94-b031-41fc-b8a8-6cd81be8fb6b) | ![image](https://github.com/user-attachments/assets/8c2cc041-a138-4950-a12e-3d529c8a5339) | ![image](https://github.com/user-attachments/assets/e7f010bd-19e2-4711-85bf-3fd00c3e5647) | ![image](https://github.com/user-attachments/assets/e2b63785-971c-489e-b069-eb85f6a30620) | ![image](https://github.com/user-attachments/assets/b65eea16-d6a3-4aa3-8a27-6ded74009010) | ![image](https://github.com/user-attachments/assets/1c7b0901-a61a-4325-9d01-9d8b14b476aa) | ![image](https://github.com/user-attachments/assets/d4a485db-d9f1-4a62-94bc-a3d125ea6dc1) | N/A | ![image](https://github.com/user-attachments/assets/7add0a2a-7fd7-483d-87ee-51ee45a2fe5d) | ![image](https://github.com/user-attachments/assets/334f50bc-9f8d-42d9-a7df-95058f7cdfd5) | ![image](https://github.com/user-attachments/assets/451fcc22-b034-453c-ae4b-b948fd6bd779) | ![image](https://github.com/user-attachments/assets/132f720c-802a-466d-bd55-c7a4750acdc3) | ![image](https://github.com/user-attachments/assets/177b7921-06c5-467d-87d3-9cdf88c4e50b) https://notriddle.com/rustdoc-html-demo-12/toolbar-v2/std/index.html ## Description This adds labels to the icons and moves them away from the search box. These changes are made together, because they work together, but are based on several complaints: * The [+/-] thing are a Reddit-ism. They don't look like buttons, but look like syntax <https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/More.20visual.20difference.20for.20the.20.2B.2F-.20.20Icons>, <https://github.com/rust-lang/rust/issues/59851> (some of these are laundry lists with more suggestions, but they all mention [+/-] looking wrong) * The settings, help, and summary buttons are also too hard to recognize <https://lwn.net/Articles/987070/>, <https://github.com/rust-lang/rust/issues/90310>, <https://github.com/rust-lang/rust/issues/14475#issuecomment-274241997>, <https://internals.rust-lang.org/t/improve-rustdoc-design/12758> ("Not all functionality is self-explanatory, for example the [+] button in the top right corner, the theme picker or the settings button.") The toggle-all and toggle-individual buttons both need done at once, since we want them to look like they go together. This changes them from both being [+/-] to both being arrows. CC <https://github.com/rust-lang/rust/pull/113074#issuecomment-1677469680> and ``@jsha`` regarding the use of triangles for disclosure, which is what everyone wanted, but was pending a good toggle-all button. This PR adds a toggle-all button that should work. Settings and Help are also migrated, so that the whole group can benefit from being described using actual words. The breadcrumbs also get redesigned, so that they use less space, by shrinking the parent module path parts. This is done at the same time as the toolbar redesign because it's, effectively, moving space from the toolbar to the breadcrumbs. This is aimed at avoiding any line wrapping at desktop sizes. ## Prior art This style of toolbar, with explicit labels on the buttons, used to be more popular. It's not very common in web browsers nowadays, and for truly universal icons like ⬅️ I can understand why, but words are great when icons fail. ![image](https://github.com/user-attachments/assets/9a4a0498-232d-4d60-87b9-f601f4515254) |
||
---|---|---|
.. | ||
src | ||
anchor-navigable.goml | ||
anchors.goml | ||
basic-code.goml | ||
check_info_sign_position.goml | ||
check-code-blocks-margin.goml | ||
check-stab-in-docblock.goml | ||
code-blocks-overflow.goml | ||
code-color.goml | ||
code-example-buttons.goml | ||
code-sidebar-toggle.goml | ||
code-tags.goml | ||
codeblock-sub.goml | ||
codeblock-tooltip.goml | ||
copy-code.goml | ||
copy-path.goml | ||
cursor.goml | ||
default-settings.goml | ||
deref-block.goml | ||
docblock-big-code-mobile.goml | ||
docblock-code-block-line-number.goml | ||
docblock-details.goml | ||
docblock-table-overflow.goml | ||
docblock-table.goml | ||
duplicate-macro-reexport.goml | ||
enum-variants.goml | ||
escape-key.goml | ||
extend-css.goml | ||
fields.goml | ||
font-weight.goml | ||
globals.goml | ||
go-to-collapsed-elem.goml | ||
hash-item-expansion.goml | ||
headers-color.goml | ||
headings-anchor.goml | ||
headings.goml | ||
help-page.goml | ||
hide-mobile-topbar.goml | ||
highlight-colors.goml | ||
huge-collection-of-constants.goml | ||
huge-logo.goml | ||
impl_on_foreign_order.goml | ||
impl-default-expansion.goml | ||
impl-doc.goml | ||
implementors.goml | ||
item-decl-colors.goml | ||
item-decl-comment-highlighting.goml | ||
item-info-alignment.goml | ||
item-info-overflow.goml | ||
item-info.goml | ||
item-name-wrap.goml | ||
item-summary-table.goml | ||
javascript-disabled.goml | ||
jump-to-def-background.goml | ||
label-next-to-symbol.goml | ||
links-color.goml | ||
list_code_block.goml | ||
method-margins.goml | ||
mobile-crate-name.goml | ||
mobile.goml | ||
module-items-font.goml | ||
no-docblock.goml | ||
notable-trait.goml | ||
overflow-tooltip-information.goml | ||
pocket-menu.goml | ||
README.md | ||
rust-logo.goml | ||
scrape-examples-button-focus.goml | ||
scrape-examples-color.goml | ||
scrape-examples-fonts.goml | ||
scrape-examples-layout.goml | ||
scrape-examples-toggle.goml | ||
search-corrections.goml | ||
search-error.goml | ||
search-filter.goml | ||
search-form-elements.goml | ||
search-input-mobile.goml | ||
search-keyboard.goml | ||
search-no-result.goml | ||
search-reexport.goml | ||
search-result-color.goml | ||
search-result-description.goml | ||
search-result-display.goml | ||
search-result-go-to-first.goml | ||
search-result-impl-disambiguation.goml | ||
search-result-keyword.goml | ||
search-tab-change-title-fn-sig.goml | ||
search-tab.goml | ||
search-title.goml | ||
setting-auto-hide-content-large-items.goml | ||
setting-auto-hide-item-methods-docs.goml | ||
setting-auto-hide-trait-implementations.goml | ||
setting-go-to-only-result.goml | ||
settings-button.goml | ||
settings.goml | ||
shortcuts.goml | ||
sidebar-links-color.goml | ||
sidebar-macro-reexport.goml | ||
sidebar-mobile-scroll.goml | ||
sidebar-mobile.goml | ||
sidebar-modnav-position.goml | ||
sidebar-resize-close-popover.goml | ||
sidebar-resize-setting.goml | ||
sidebar-resize-window.goml | ||
sidebar-resize.goml | ||
sidebar-source-code-display.goml | ||
sidebar-source-code.goml | ||
sidebar.goml | ||
source-anchor-scroll.goml | ||
source-code-page-code-scroll.goml | ||
source-code-page.goml | ||
src-font-size.goml | ||
stab-badge.goml | ||
stab-in-doc.goml | ||
struct-fields.goml | ||
target.goml | ||
theme-change.goml | ||
theme-defaults.goml | ||
theme-in-history.goml | ||
toggle-click-deadspace.goml | ||
toggle-docs-mobile.goml | ||
toggle-docs.goml | ||
toggle-implementors.goml | ||
toggled-open-implementations.goml | ||
tooltip-over-sidebar.goml | ||
trait-sidebar-item-order.goml | ||
trait-with-bounds.goml | ||
type-declation-overflow.goml | ||
type-impls.goml | ||
unsafe-fn.goml | ||
utils.goml | ||
warning-block.goml | ||
where-whitespace.goml |
The tests present here are used to test the generated HTML from rustdoc. The goal is to prevent unsound/unexpected GUI changes.
This is using the browser-ui-test framework to do so. It works as follows:
It wraps puppeteer to send commands to a web browser in order to navigate and test what's being currently displayed in the web page.
You can find more information and its documentation in its repository.
If you need to have more information on the tests run, you can use --test-args
:
$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --debug
If you don't want to run in headless mode (helpful to debug sometimes), you can use
--no-headless
:
$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --no-headless
To see the supported options, use --help
.
Important to be noted: if the chromium instance crashes when you run it, you might need to
use --no-sandbox
to make it work:
$ ./x.py test tests/rustdoc-gui --stage 1 --test-args --no-sandbox