refactor(docs-infra): make `<details>` styles more re-usable (#42620)

This commit makes the styling for `<details>` elements (including
expand/collapse actions in their `<summary>`) more re-usable.

PR Close #42620
This commit is contained in:
George Kalpakas 2021-06-22 21:46:19 +03:00 committed by Jessica Janiuk
parent 09ec62a357
commit fd78678284
3 changed files with 65 additions and 60 deletions

View File

@ -10,53 +10,23 @@
details.overloads {
box-shadow: none;
.icon-action-header {
display: flex;
flex-direction: row;
align-items: center;
> summary {
justify-content: space-between;
a {
display: flex;
}
}
.detail-contents {
padding: 0;
border-radius: 2px;
box-shadow: none;
> *:not(hr) {
margin: 16px 24px;
}
}
summary {
height: inherit;
padding: 0;
h4 {
margin: 0;
clear: left;
}
.actions {
display: flex;
@include mixins.font-size(14);
}
.show-all {
display: initial;
}
.collapse-all {
display: none;
}
}
&[open] > summary {
.show-all {
display: none;
}
.collapse-all {
display: initial;
> .details-content {
padding: 0;
border-radius: 2px;
box-shadow: none;
> *:not(hr) {
margin: 16px 24px;
}
}
}

View File

@ -14,6 +14,19 @@
* </div>
* </details>
* ```
*
* Optionally, you can use an `.actions` container inside `<summary>` to show expand/collapse
* actions and/or a rotating icon:
* ```html
* <summary>
* <span>Some title</span>
* <span class="actions">
* <span class="action-expand">Show more</span>
* <span class="action-collapse">Show less</span>
* <i class="material-icons expand">expand_more</i>
* </span>
* </summary>
* ```
*/
details {
@ -21,33 +34,57 @@ details {
cursor: pointer;
@include mixins.font-size(16);
position: relative;
padding: 16px 24px;
height: 16px;
display: block; // Remove the built in details marker in FF
padding: 16px;
height: inherit;
display: flex; // Remove the built in details marker in FF
align-items: center;
overflow: hidden;
&::-webkit-details-marker {
display: none; // Remove the built in details marker in webkit
}
// Rotate the icon
i.material-icons.expand {
@include mixins.rotate(0deg);
@at-root #{selector.replace(&, 'details', 'details[open]')} {
@include mixins.rotate(180deg);
}
}
> h2 {
margin: 0;
padding: 0;
border: none;
display: inline;
}
.actions {
align-items: center;
display: flex;
@include mixins.font-size(14);
// Show/hide expand and collapse actions.
.action-expand {
display: initial;
@at-root #{selector.replace(&, 'details', 'details[open]')} {
display: none;
}
}
.action-collapse {
display: none;
@at-root #{selector.replace(&, 'details', 'details[open]')} {
display: initial;
}
}
// Rotate the expand/collapse icon.
.material-icons.expand {
@include mixins.rotate(0deg);
@at-root #{selector.replace(&, 'details', 'details[open]')} {
@include mixins.rotate(180deg);
}
}
}
}
.detail-contents {
.details-content {
padding: 16px 24px;
}
}

View File

@ -130,16 +130,14 @@
<td>
<details class="overloads">
<summary>
<div class="icon-action-header">
<h4 class="no-anchor">{$ method.overloads.length $} overloads...</h4>
<span class="actions">
<span class="show-all">Show All</span>
<span class="collapse-all">Hide All</span>
<i class="material-icons expand">expand_more</i>
</span>
</div>
<h4 class="no-anchor">{$ method.overloads.length $} overloads...</h4>
<span class="actions">
<span class="action-expand">Show All</span>
<span class="action-collapse">Hide All</span>
<i class="material-icons expand">expand_more</i>
</span>
</summary>
<div class="detail-contents">
<div class="details-content">
{% if method.isAbstract %}
{$ renderOverloadInfo(method, cssClass + '-overload', method) $}
<hr class="hr-margin fullwidth">