[WIP] Start transforming documentation toggles into pure css ones#83355
[WIP] Start transforming documentation toggles into pure css ones#83355GuillaumeGomez wants to merge 1 commit intorust-lang:masterfrom
Conversation
|
Some changes occurred in HTML/CSS/JS. Some changes occurred in HTML/CSS themes. |
|
Note this might conflict with #83337, might want to be careful on timing? |
|
I didn't touch anything on the item's display because of your PR (which I still need to review). So we should be fine. ;) |
|
The job Click to see the possible cause of the failure (guessed by this bot) |
| crate struct Buffer { | ||
| for_html: bool, | ||
| buffer: String, | ||
| crate label_id_count: usize, |
There was a problem hiding this comment.
Buffer seems like the wrong place to put this field. Maybe it should be on Context instead?
| } | ||
| if (!otherMessage) { | ||
| span.innerHTML = " Expand description"; | ||
| return null; |
There was a problem hiding this comment.
nit: This is 3-space indent, it should be 4.
|
Have you tried using |
|
Yeah, note that with |
It does conflict a little but but that's fine |
|
Oh nice, I didn't know about |
|
☔ The latest upstream changes (presumably #82873) made this pull request unmergeable. Please resolve the merge conflicts. |
|
@GuillaumeGomez I actually started on a master...jsha:details-toggle You are very welcome to pick up any of that code if you'd like. I didn't wind up finishing it because my original motivation was to improve performance, and some performance test tools actually showed a regression in render performance. But given that you'd like to clean up the toggle-related JS anyhow, it seems like a good fit. |
|
By the way, a nice advantage of the |
|
I incorporated the |
|
@GuillaumeGomez given that @jsha started a bunch of the work on this in #83337, perhaps we should close this PR for now, wait for that to land, and build improvements on top of that? |
|
Sure! |
…earth,Nemo157,GuillaumeGomez Use details tag for trait implementors. Part of rust-lang#83332 and following on from rust-lang#83337 and rust-lang#83355. This removes one category of JS-generated toggles (implementors), and replaces them with a `<details>` tag. This simplifies the JS, and fixes some bugs where things that were supposed to be hidden by the toggle were not hidden. Compare https://hoffman-andrews.com/rust/details-implementors/std/io/trait.Read.html#impl-Read vs https://doc.rust-lang.org/nightly/std/io/trait.Read.html#implementors. This introduces a `left: -23px` to put the toggle in the correct place, matching the current style for `.collapse-toggle`. It's worth noting this introduces a slight behavior change: since the entire line is now a `<summary>`, any part of the line is clickable. So for instance, in `impl Read for File`, clicking `impl` or `for` will collapse / expand the docs. Clicking `Read` or `File` still links to the appropriate documentation as before.
…earth,Nemo157,GuillaumeGomez Use details tag for trait implementors. Part of rust-lang#83332 and following on from rust-lang#83337 and rust-lang#83355. This removes one category of JS-generated toggles (implementors), and replaces them with a `<details>` tag. This simplifies the JS, and fixes some bugs where things that were supposed to be hidden by the toggle were not hidden. Compare https://hoffman-andrews.com/rust/details-implementors/std/io/trait.Read.html#impl-Read vs https://doc.rust-lang.org/nightly/std/io/trait.Read.html#implementors. This introduces a `left: -23px` to put the toggle in the correct place, matching the current style for `.collapse-toggle`. It's worth noting this introduces a slight behavior change: since the entire line is now a `<summary>`, any part of the line is clickable. So for instance, in `impl Read for File`, clicking `impl` or `for` will collapse / expand the docs. Clicking `Read` or `File` still links to the appropriate documentation as before.
…earth,Nemo157,GuillaumeGomez Use details tag for trait implementors. Part of rust-lang#83332 and following on from rust-lang#83337 and rust-lang#83355. This removes one category of JS-generated toggles (implementors), and replaces them with a `<details>` tag. This simplifies the JS, and fixes some bugs where things that were supposed to be hidden by the toggle were not hidden. Compare https://hoffman-andrews.com/rust/details-implementors/std/io/trait.Read.html#impl-Read vs https://doc.rust-lang.org/nightly/std/io/trait.Read.html#implementors. This introduces a `left: -23px` to put the toggle in the correct place, matching the current style for `.collapse-toggle`. It's worth noting this introduces a slight behavior change: since the entire line is now a `<summary>`, any part of the line is clickable. So for instance, in `impl Read for File`, clicking `impl` or `for` will collapse / expand the docs. Clicking `Read` or `File` still links to the appropriate documentation as before.
…earth,Nemo157,GuillaumeGomez Use details tag for trait implementors. Part of rust-lang#83332 and following on from rust-lang#83337 and rust-lang#83355. This removes one category of JS-generated toggles (implementors), and replaces them with a `<details>` tag. This simplifies the JS, and fixes some bugs where things that were supposed to be hidden by the toggle were not hidden. Compare https://hoffman-andrews.com/rust/details-implementors/std/io/trait.Read.html#impl-Read vs https://doc.rust-lang.org/nightly/std/io/trait.Read.html#implementors. This introduces a `left: -23px` to put the toggle in the correct place, matching the current style for `.collapse-toggle`. It's worth noting this introduces a slight behavior change: since the entire line is now a `<summary>`, any part of the line is clickable. So for instance, in `impl Read for File`, clicking `impl` or `for` will collapse / expand the docs. Clicking `Read` or `File` still links to the appropriate documentation as before.
…earth,Nemo157,GuillaumeGomez Use details tag for trait implementors. Part of rust-lang#83332 and following on from rust-lang#83337 and rust-lang#83355. This removes one category of JS-generated toggles (implementors), and replaces them with a `<details>` tag. This simplifies the JS, and fixes some bugs where things that were supposed to be hidden by the toggle were not hidden. Compare https://hoffman-andrews.com/rust/details-implementors/std/io/trait.Read.html#impl-Read vs https://doc.rust-lang.org/nightly/std/io/trait.Read.html#implementors. This introduces a `left: -23px` to put the toggle in the correct place, matching the current style for `.collapse-toggle`. It's worth noting this introduces a slight behavior change: since the entire line is now a `<summary>`, any part of the line is clickable. So for instance, in `impl Read for File`, clicking `impl` or `for` will collapse / expand the docs. Clicking `Read` or `File` still links to the appropriate documentation as before.
This is a first draft of #83332. I precise: this is a work in progress. However, with this we can already see what it'll look like after. I precise: even if incomplete, this is working.
For now, this PR switched the doc blocks toggles for the following parts:
Some explanations on how it works: I used a trick based on checkbox. I hide the checkbox and only print its label, so when you click on the label, you check/uncheck the checkbox. Now, that also brings some downsides too:
divto wrap the function and its documentation. However, I see that as a positive point because we're finally "merging" the items and their documentation.div, alabeland aninputfor each item with documentation.The advantages now:
There are some small display differences too because currently we use
widthon the -/+ sign to make the whole a big larger.Before:
After:
If this seems to be the right way to go, I'll clean up this PR (and finish to remove the remaining JS toggles) so we can finally have toggles 100% non-JS. \o/
r? @Manishearth