Commit graph

569 commits

Author SHA1 Message Date
Michael Howell
813584950d rustdoc: simplify popover CSS
* Merge the color-changing block into the regular rules, which was
  probably written that way because it used to be in the theme files,
  but has no reason to be written this way now that it's in rustdoc.css

* Get rid of redundant `display: block`, since `position: absolute`
  blockifies the layout anyway.
2022-12-13 11:00:34 -07:00
Michael Howell
bfc50d0534 rustdoc: remove no-op CSS .source pre { overflow: auto }
Since source pages use the `example-wrap` wrapper, this rule became
redundant because there is already an `overflow-x: auto` rule.
2022-12-12 10:02:04 -07:00
Matthias Krüger
d0563c64b8
Rollup merge of #105504 - notriddle:notriddle/stab-css, r=GuillaumeGomez
rustdoc: make stability badge CSS more consistent

# Before

![image](https://user-images.githubusercontent.com/1593513/206763667-8e0deb74-be63-4906-8229-9a7eb51725c2.png)

![image](https://user-images.githubusercontent.com/1593513/206764007-6301c0e8-4594-4a41-ba93-105824dffee6.png)

# After

![image](https://user-images.githubusercontent.com/1593513/206763698-e187cee2-3a50-4e48-b7b5-c3cfa41a797d.png)

![image](https://user-images.githubusercontent.com/1593513/206764058-3999ee67-1439-4c98-8216-b90575342aa8.png)

# Description

* They all get rounded corners now. A test case has been added for this, too.

* There are now broadly two kinds of stability badge, where there used to be three: item-info "fat badge", and the "thin badge" in both item tables and in docblocks (which got merged). The fat badges can have icons, while the thin badges can't.

* The old Ayu design doesn't make sense to me. Does anyone know why it was done that way?
2022-12-09 22:31:58 +01:00
Matthias Krüger
d4773866be
Rollup merge of #105480 - notriddle:notriddle/sidebar-toggle-mobile-center, r=GuillaumeGomez
rustdoc: remove no-op mobile CSS `#sidebar-toggle { text-align }`

Since 8b001b4da0 make the sidebar toggle a flex container, and already centers its content in desktop mode, this rule doesn't do anything.
2022-12-09 22:31:57 +01:00
Michael Howell
d60967bef2 rustdoc: make stability badge CSS more consistent
* They all get rounded corners now. A test case has been added for this, too.

* There are now broadly two kinds of stability badge, where there used to be
  three: item-info "fat badge", and the "thin badge" in both item tables and
  in docblocks (which got merged). The fat badges can have icons, while the
  thin badges can't.
2022-12-09 10:54:44 -07:00
Matthias Krüger
441669c382
Rollup merge of #105442 - notriddle:notriddle/docblock-table-css, r=GuillaumeGomez
rustdoc: clean up docblock table CSS

# Preview

http://notriddle.com/notriddle-rustdoc-demos/table-2/test_dingus/fn.test.html

# Before

![image](https://user-images.githubusercontent.com/1593513/206364287-1b80eaaf-2e0e-4138-8b56-4aa8ff39abac.png)

# After

![image](https://user-images.githubusercontent.com/1593513/206364209-d287d165-31be-4de1-9b43-05b35ce2a86b.png)

# Details

* The rule `display: block` had no noticeable effect. Technically, because markdown tables have a tbody and thead, they get wrapped in an [anonymous table box] in the CSS tree, nested within the `<table>` element's block layout box.

  This rule was added in #87230 to make the table side-scrolling, but this same issue was doubly fixed in #88742 by wrapping it in an explicit `<div>` tag. Since accessibility advocates recommend the wrapper div over marking the table as `display: block`, we'll stick with that.

  https://adrianroselli.com/2020/11/under-engineered-responsive-tables.html

* The rule `width: calc(100% - 2px)` had no visible effect, because the anonymous table box was not affected.

* The style is tweaked to basically be the same style GitHub uses. In particular, it adds zebra stripes, and removes dotted borders.

  https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/Markdown.20table.20styling

[anonymous table box]: https://www.w3.org/TR/CSS2/tables.html#anonymous-boxes
2022-12-09 07:25:46 +01:00
Matthias Krüger
5fd540b8fe
Rollup merge of #105387 - willcrichton:scrape-examples-ui-improvements, r=notriddle
Improve Rustdoc scrape-examples UI

This PR combines a few different improvements to the scrape-examples UI. See a live demo here: https://willcrichton.net/misc/scrape-examples/small-first-example/clap/struct.Arg.html

### 1. The first scraped example now takes up significantly less screen height.
Inserting the first scraped example takes up a lot of vertical screen space. I don't want this addition to overwhelm users, so I decided to reduce the height of the initial example in two ways: (A) the default un-expanded height is reduced from 240px (10 LOC) to 120px (5 LOC), and (B) the link to the example is now positioned *over* the example instead of *atop* the example (only on desktop though, not mobile). The changes to `scrape-examples.js` and `rustdoc.css` implement this fix.

Here is what an example docblock now looks like:

![Screen Shot 2022-12-06 at 10 02 21 AM](https://user-images.githubusercontent.com/663326/205987450-3940063c-5973-4a34-8579-baff6a43aa9b.png)

### 2. Expanding all docblocks will not expand "More examples".
The "More examples blocks" are huge, so fully expanding everything on the page would take up too much vertical space. The changes to `main.js` implement this fix. This is tested in `scrape-examples-toggle.goml`.

### 3. Examples from binary crates are sorted higher than examples from library crates.
Code that is written as an example of an API is probably better for learning than code that happens to use an API, but isn't intended for pedagogic purposes. Unfortunately Rustc doesn't know whether a particular crate comes from an example target (only Cargo knows this). But we can at least create a proxy that prefers examples from binary crates over library crates, which we know from `--crate-type`.

This change is implemented by adding a new field `bin_crate` in `Options` (see `config.rs`). An `is_bin` field has been added to the scraped examples metadata (see `scrape_examples.rs`). Then the example sorting metric uses `is_bin` as the first entry of a lexicographic sort on `(is_bin, example_size, display_name)` (see `render/mod.rs`).

Note that in the future we can consider adding another flag like `--scrape-examples-cargo-target` that would pass target information from Cargo into the example metadata. But I'm proposing a less intrusive change for now.

### 4. The scrape-examples help page has been updated to reflect the latest Cargo interface.

See `scrape-examples-help.md`.

r? `@notriddle`

P.S. once this PR and rust-lang/cargo#11450 are merged, then I think the scrape-examples feature is officially ready for deployment on docs.rs!
2022-12-09 07:25:44 +01:00
Michael Howell
90da11d9af rustdoc: remove no-op mobile CSS #sidebar-toggle { text-align }
Since 8b001b4da0 make the sidebar toggle a
flex container, and already centers its content in desktop mode, this
rule doesn't do anything.
2022-12-08 17:38:07 -07:00
Michael Howell
34700f6594 rustdoc: add GUI test case for docblock table colors 2022-12-08 10:37:03 -07:00
Michael Howell
a09e8c55c6 rustdoc: clean up docblock table CSS
* The rule `display: block` had no noticeable effect. Technically, because
  markdown tables have a tbody and thead, they get wrapped in an [anonymous
  table box] in the CSS tree, nested within the `<table>` element's block
  layout box.

  This rule was added in #87230 to make the table side-scrolling, but
  this same issue was doubly fixed in #88742 by wrapping it in an explicit
  `<div>` tag. Since accessibility advocates recommend the wrapper div over
  marking the table as `display: block`, we'll stick with that.

  https://adrianroselli.com/2020/11/under-engineered-responsive-tables.html

* The rule `width: calc(100% - 2px)` had no visible effect, because the
  anonymous table box was not affected.

* The style is tweaked to basically be the same style GitHub uses.
  In particular, it adds zebra stripes, and removes dotted borders.

[anonymous table box]: https://www.w3.org/TR/CSS2/tables.html#anonymous-boxes
2022-12-07 22:49:10 -07:00
Will Crichton
9499d2cce3 Improve calculation of scraped example minimized height 2022-12-07 10:42:09 -08:00
Will Crichton
0709e534df Fix rustdoc error with no providec crate-type, fix scrape examples button colors w/ themes 2022-12-07 09:08:43 -08:00
Will Crichton
679d7ea064 Include additional documentation for scrape-examples changes 2022-12-07 09:08:43 -08:00
Will Crichton
4574217074 Only put title over example on large screens 2022-12-07 09:08:43 -08:00
Will Crichton
6ccd14a782 Improve several aspects of the Rustdoc scrape-examples UI.
* Examples take up less screen height.
* Snippets from binary crates are prioritized.
* toggle-all-docs does not expand "More examples" sections.
2022-12-07 09:08:43 -08:00
Matthias Krüger
c75478b246
Rollup merge of #105403 - notriddle:notriddle/item-stab-css, r=GuillaumeGomez
rustdoc: simplify CSS selectors for item table `.stab`

The module-item and import-item classes are attached to the item-left. Just target that, instead.
2022-12-07 15:39:09 +01:00
Michael Howell
75aef7036f rustdoc: simplify CSS selectors for item table .stab
The module-item and import-item classes are attached to the item-left.
Just target that, instead.
2022-12-06 17:10:17 -07:00
Matthias Krüger
2ee1573fa5
Rollup merge of #105388 - notriddle:notriddle/item-stab-font-size, r=GuillaumeGomez
rustdoc: remove redundant CSS `.import-item .stab { font-size }`

This sets the exact same font size that `.stab` has by default anyway. It used to be slightly different, but dd5ff428ed made it identical.
2022-12-06 23:13:51 +01:00
Michael Howell
958a1ae0f7 rustdoc: remove redundant CSS .import-item .stab { font-size }
This sets the exact same font size that `.stab` has by default anyway.
It used to be slightly different, but
dd5ff428ed made it identical.
2022-12-06 11:56:22 -07:00
Matthias Krüger
dc07e1bbdd
Rollup merge of #105320 - notriddle:notriddle/rustdoc-toggle-hideme-2, r=GuillaumeGomez
rustdoc: simplify CSS selectors on top-doc and non-exhaustive toggles

This code uses a special `hideme` class anyway, so just style that.
2022-12-06 16:54:55 +01:00
Yuki Okushi
6dd1a404c1
Rollup merge of #105309 - notriddle:notriddle/sidebar-margin-padding, r=GuillaumeGomez
rustdoc: remove no-op mobile CSS `.sidebar { margin: 0; padding: 0 }`

This isn't overriding anything, because the sidebar never has a margin or padding on it.
2022-12-06 12:48:52 +09:00
Yuki Okushi
532fe7b8e0
Rollup merge of #104967 - willcrichton:fix-scrape-examples, r=notriddle
Fix UI issues with Rustdoc scrape-examples feature.

A few regressions have been introduced into scrape-examples in the last few months. This commit fixes those regressions:
* Help file was being loaded from the wrong place (introduced in f9e1f6ffdf).
* CSS selector in JS has a typo (introduced in 14897180ae).
* Line numbers in scraped example code snippets are overflowing (not sure if this was ever fixed). Changing from flexbox to grid display fixed this issue.
2022-12-06 12:48:50 +09:00
Michael Howell
32765fbe10 rustdoc: simplify CSS selectors on top-doc and non-exhaustive toggles
This code uses a special `hideme` class anyway, so just style that.
2022-12-05 13:01:29 -07:00
Michael Howell
65072ee775 rustdoc: remove no-op mobile CSS .sidebar { margin: 0; padding: 0 }
This isn't overriding anything, because the sidebar never has a margin or
padding on it.
2022-12-05 09:15:43 -07:00
Yuki Okushi
d8f6cc3b63
Rollup merge of #105189 - notriddle:notriddle/rustdoc-toggle-hideme, r=GuillaumeGomez
rustdoc: clean up redundant CSS on `.rustdoc-toggle.hideme`
2022-12-03 12:51:30 +09:00
Michael Howell
c635cb774b rustdoc: clean up redundant CSS on .rustdoc-toggle.hideme 2022-12-02 14:39:06 -07:00
Matthias Krüger
de0d18a85e
Rollup merge of #105155 - notriddle:notriddle/flexbox-help-settings-buttons, r=GuillaumeGomez
rustdoc: clean up help and settings button CSS

The old version of this code specified a bunch of different numbers that had to line up just right to get the size it wanted. This version uses flexbox centering, specifies the font size, and lets the browser figure out the rest of the layout automatically.

Preview: http://notriddle.com/notriddle-rustdoc-demos/flexbox-help-settings-buttons/test_dingus/
2022-12-02 21:22:49 +01:00
Matthias Krüger
8e059d5968
Rollup merge of #105143 - notriddle:notriddle/scraped-example-list-font, r=GuillaumeGomez
rustdoc: use simpler CSS for setting the font on scraped examples
2022-12-02 08:28:12 +01:00
Matthias Krüger
f95385b5d4
Rollup merge of #105132 - GuillaumeGomez:migrate-summary-toggle-to-var, r=notriddle
Migrate summary toggle filter to CSS variable

r? `@notriddle`
2022-12-02 08:28:09 +01:00
Michael Howell
efdec6d093 rustdoc: clean up help and settings button CSS
The old version of this code specified a bunch of different numbers that had
to line up just right to get the size it wanted. This version uses flexbox
centering, specifies the font size, and lets the browser figure out the
rest of the layout automatically.
2022-12-01 14:24:33 -07:00
Michael Howell
6ab34f49f0 rustdoc: clean up button-hiding mobile CSS 2022-12-01 13:44:28 -07:00
Michael Howell
935def4df1 rustdoc: use simpler CSS for setting the font on scraped examples 2022-12-01 12:34:02 -07:00
Guillaume Gomez
f76c4b84c9 Migrate summary toggle filter to CSS variable 2022-12-01 15:55:09 +01:00
Matthias Krüger
3ec9a6dd74
Rollup merge of #105088 - notriddle:notriddle/search-results-div-desc, r=GuillaumeGomez
rustdoc: remove redundant CSS `div.desc { display: block }`

DIV tags have block display by default. It is from when this rule used to target a SPAN tag, but became redundant in 4bd6748bb9.
2022-12-01 11:59:00 +01:00
Matthias Krüger
e005d0406f
Rollup merge of #105086 - notriddle:notriddle/sidebar-css, r=GuillaumeGomez
rustdoc: clean up sidebar link CSS

Group `text-overflow: ellipses` along with `white-space: nowrap`. It makes no sense to try to apply it to links with `overflow-wrap: anywhere`, because it can't actually make ellipses when that's turned on.

Simplify the selector for the 25rem left padding on sidebar links, to match up with the style for the container left padding that makes room for it.
2022-11-30 19:53:20 +01:00
Matthias Krüger
4357c2d018
Rollup merge of #105064 - notriddle:notriddle/main-min-width, r=GuillaumeGomez
rustdoc: add comment to confusing CSS `main { min-width: 0 }`

This CSS was added in cad0fce205, but the reason why it was necessary was unclear. This comment makes it clear.
2022-11-30 19:53:19 +01:00
Michael Howell
2405e60769 rustdoc: remove redundant CSS div.desc { display: block }
DIV tags have block display by default. It is from when this rule
used to target a SPAN tag, but became redundant in
4bd6748bb9.
2022-11-30 09:03:08 -07:00
Michael Howell
3a61ab6116 rustdoc: clean up sidebar link CSS
Group `text-overflow: ellipses` along with `white-space: nowrap`. It makes
no sense to try to apply it to links with `overflow-wrap: anywhere`, because
it can't actually make ellipses when that's turned on.

Simplify the selector for the 25rem left padding on sidebar links, to match
up with the style for the container left padding that makes room for it.
2022-11-30 08:03:13 -07:00
Michael Howell
43f5d2b910 rustdoc: add comment to confusing CSS main { min-width: 0 }
This CSS was added in cad0fce205, but the
reason why it was necessary was unclear. This comment makes it clear.
2022-11-29 13:22:01 -07:00
Michael Howell
edf5cce5a4 rustdoc: use shorthand background for rustdoc toggle CSS 2022-11-29 11:13:44 -07:00
Matthias Krüger
0e7f15947e
Rollup merge of #105024 - notriddle:notriddle/fnname, r=jyn514
rustdoc: remove `fnname` CSS class that's styled exactly like `fn`

It's not obvious why this was ever a separate class name, since even in c4219a4783 when it was first added, it was styled identically to regular `fn` links.
2022-11-29 05:24:24 +01:00
Michael Howell
19e0200296 rustdoc: remove fnname CSS class that's styled exactly like fn
It's not obvious why this was ever a separate class name, since even
in c4219a4783 when it was first added,
it was styled identically to regular `fn` links.
2022-11-28 10:51:46 -07:00
Michael Howell
7181b8f3bc rustdoc: merge background-image rules in rustdoc-toggle CSS 2022-11-28 09:55:36 -07:00
Will Crichton
83ba42526f Fix UI issues with Rustdoc scrape-examples feature.
* Help file was being loaded from the wrong place.
* CSS selector in JS has a typo.
* Line numbers are overflowing, change to display: grid to fix.
2022-11-26 22:04:45 -06:00
Guillaume Gomez
d99201c381
Rollup merge of #104928 - notriddle:notriddle/sidebar-toggle-flexbox, r=GuillaumeGomez
rustdoc: use flexbox CSS to align sidebar button instead of position

This accomplishes the same thing with significantly less code.

Preview: https://notriddle.com/notriddle-rustdoc-demos/sidebar-toggle-flexbox/src/test_dingus/lib.rs.html
2022-11-26 17:47:25 +01:00
Matthias Krüger
8586544855
Rollup merge of #104899 - notriddle:notriddle/help-dt, r=GuillaumeGomez
rustdoc: remove no-op CSS `#help dt { display: block }`

`display: block` is the [default UA style] for dt.

[default UA style]: https://html.spec.whatwg.org/multipage/rendering.html#lists
2022-11-26 10:39:12 +01:00
Michael Howell
8b001b4da0 rustdoc: use flexbox CSS to align sidebar button instead of position
This accomplishes the same thing with significantly less code.
2022-11-25 22:06:22 -07:00
Michael Howell
20cb41f466 rustdoc: remove no-op CSS #help dt { display: block }
`display: block` is the [default UA style] for dt.

[default UA style]: https://html.spec.whatwg.org/multipage/rendering.html#lists
2022-11-25 10:07:21 -07:00
Michael Howell
f8b2e13d16 rustdoc: remove cursor: pointer from unclickable tooltip
It's misleading unless it gets changed to respond to being clicked.
2022-11-25 09:16:27 -07:00
Matthias Krüger
8babe1c417
Rollup merge of #104849 - GuillaumeGomez:source-code-sidebar-css-migration, r=notriddle
Migrate source code elements style to CSS variables

r? ``@notriddle``
2022-11-25 10:44:40 +01:00