Use details tag to show/hide a draft version TOC
We were using JavaScript to show/hide the Table of Contents. In my humble opinion, the <details> tag has a few shortcomings [1][2], which means we should be careful about when to use it. IMHO a Table of Contents is a good candidate for this tag because it's a very common pattern to add a show/hide behavior for it, even if using it means the "navigation" role (which we are *not* using anyway) wouldn't be identified correctly. I'm adding a <details> tag to the comments section as well for consistency and in order to simplify the code. I'm not sure this is as good an application of the <details> tag, though, but then again I'm not sure about the interface we use to show/hide the comments (and this feeling is increased by the fact that we use a different interface on small screens). If we decide to change the interface in the future, we might consider using the <details> tag for the Table of Contents but not for the comments. Since the <details> tag is not supported on Internet Explorer, I'm only adding styles to this tag using the `:not([open])` option. On Internet Explorer <details> will always be opened and so these styles will be ignored. [1] https://adrianroselli.com/2019/04/details-summary-are-not-insert-control-here.html [2] https://daverupert.com/2019/12/why-details-is-not-an-accordion/
This commit is contained in:
@@ -326,33 +326,6 @@
|
||||
position: relative;
|
||||
padding: rem-calc(32) 0;
|
||||
|
||||
%calc-collapsed {
|
||||
.draft-panel {
|
||||
@include breakpoint(medium) {
|
||||
line-height: 1;
|
||||
display: block;
|
||||
font-size: $small-font-size;
|
||||
text-transform: uppercase;
|
||||
font-weight: 700;
|
||||
color: #696969;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
|
||||
.icon-banner::before,
|
||||
.icon-comments::before {
|
||||
display: block;
|
||||
margin: rem-calc(24) auto rem-calc(36);
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
display: block;
|
||||
transform: rotate(-90deg);
|
||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.draft-chooser {
|
||||
|
||||
h3 {
|
||||
@@ -411,12 +384,6 @@
|
||||
padding-right: rem-calc(15);
|
||||
}
|
||||
|
||||
.calc-index {
|
||||
.draft-panel {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 40em) {
|
||||
.calc-index {
|
||||
width: calc(35% - 25px);
|
||||
@@ -425,19 +392,6 @@
|
||||
.calc-text {
|
||||
width: calc(65% - 25px);
|
||||
}
|
||||
|
||||
.calc-comments {
|
||||
cursor: pointer;
|
||||
background: #f2f2f2;
|
||||
width: rem-calc(50);
|
||||
|
||||
.draft-panel {
|
||||
|
||||
.panel-title {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.border-right {
|
||||
@@ -558,26 +512,51 @@
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.comments-on) .calc-comments {
|
||||
@extend %calc-collapsed;
|
||||
.calc-comments {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.comment-box {
|
||||
summary {
|
||||
cursor: pointer;
|
||||
list-style: none;
|
||||
|
||||
&::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.comments-on {
|
||||
.calc-index {
|
||||
@extend %calc-collapsed;
|
||||
|
||||
width: rem-calc(50);
|
||||
details:not([open]) {
|
||||
background: #f2f2f2;
|
||||
cursor: pointer;
|
||||
|
||||
.draft-index {
|
||||
display: none;
|
||||
@include breakpoint(small only) {
|
||||
border-bottom: 1px solid #d4d4d4;
|
||||
}
|
||||
|
||||
@include breakpoint(medium) {
|
||||
width: rem-calc(50);
|
||||
|
||||
.draft-panel {
|
||||
line-height: 1;
|
||||
display: block;
|
||||
font-size: $small-font-size;
|
||||
text-transform: uppercase;
|
||||
font-weight: 700;
|
||||
color: #696969;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
|
||||
.icon-banner::before,
|
||||
.icon-comments::before {
|
||||
display: block;
|
||||
margin: rem-calc(24) auto rem-calc(36);
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
display: block;
|
||||
transform: rotate(-90deg);
|
||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -604,8 +583,14 @@
|
||||
cursor: auto;
|
||||
width: calc(35% - 25px);
|
||||
|
||||
.draft-panel {
|
||||
cursor: pointer;
|
||||
@include breakpoint(small only) {
|
||||
summary {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&:not([open]) {
|
||||
border-left: 1px solid #d4d4d4;
|
||||
}
|
||||
|
||||
.comments-box-container {
|
||||
@@ -790,15 +775,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.draft-panel {
|
||||
background: #e5e5e5;
|
||||
border-left: 1px solid #d4d4d4;
|
||||
|
||||
.panel-title {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user