Skip to content

Commit 1564f28

Browse files
committed
Merge pull request scala#4973 from felixmulder/topic/scaladoc-replace-utf8-glyphs
Scaladoc: Replace UTF8 glyphs with the Material Typeface
2 parents eb11731 + 42ae388 commit 1564f28

File tree

3 files changed

+75
-43
lines changed

3 files changed

+75
-43
lines changed

src/scaladoc/scala/tools/nsc/doc/html/page/Entity.scala

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,13 @@ trait EntityPage extends HtmlPage {
163163

164164
<div id="mbrsel">
165165
<div class='toggle'></div>
166-
<div id='memberfilter'><span class='input'><input id='mbrsel-input' placeholder='Filter members' type='text' accesskey='/'/></span><span class='clear'>✖</span></div>
166+
<div id='memberfilter'>
167+
<i class="material-icons arrow">&#xE037;</i>
168+
<span class='input'>
169+
<input id='mbrsel-input' placeholder='Filter members' type='text' accesskey='/'/>
170+
</span>
171+
<i class="clear material-icons">&#xE14C;</i>
172+
</div>
167173
<div id='filterby'>
168174
<div id="order">
169175
<span class="filtertype">Ordering</span>
@@ -540,7 +546,10 @@ trait EntityPage extends HtmlPage {
540546
mbr match {
541547
case nte: NonTemplateMemberEntity if nte.isUseCase =>
542548
<div class="full-signature-block toggleContainer">
543-
<span class="toggle">Full Signature</span>
549+
<span class="toggle">
550+
<i class="material-icons">&#xE037;</i>
551+
Full Signature
552+
</span>
544553
<div class="hiddenContent full-signature-usecase">{ signature(nte.useCaseOf.get,isSelf = true) }</div>
545554
</div>
546555
case _ => NodeSeq.Empty
@@ -682,7 +691,10 @@ trait EntityPage extends HtmlPage {
682691
val linearization = mbr match {
683692
case dtpl: DocTemplateEntity if isSelf && !isReduced && dtpl.linearizationTemplates.nonEmpty =>
684693
<div class="toggleContainer block">
685-
<span class="toggle">Linear Supertypes</span>
694+
<span class="toggle">
695+
<i class="material-icons">&#xE037;</i>
696+
Linear Supertypes
697+
</span>
686698
<div class="superTypes hiddenContent">{
687699
typesToHtml(dtpl.linearizationTypes, hasLinks = true, sep = scala.xml.Text(", "))
688700
}</div>
@@ -702,7 +714,10 @@ trait EntityPage extends HtmlPage {
702714
transitive(dtpl)
703715
if (subs.nonEmpty)
704716
<div class="toggleContainer block">
705-
<span class="toggle">Known Subclasses</span>
717+
<span class="toggle">
718+
<i class="material-icons">&#xE037;</i>
719+
Known Subclasses
720+
</span>
706721
<div class="subClasses hiddenContent">{
707722
templatesToHtml(subs.toList.sorted(Entity.EntityOrdering), scala.xml.Text(", "))
708723
}</div>
@@ -719,7 +734,10 @@ trait EntityPage extends HtmlPage {
719734
val diagramSvg = generator.generate(diagram.get, tpl, this)
720735
if (diagramSvg != NodeSeq.Empty) {
721736
<div class="toggleContainer block diagram-container" id={ id + "-container"}>
722-
<span class="toggle diagram-link">{ description }</span>
737+
<span class="toggle diagram-link">
738+
<i class="material-icons">&#xE037;</i>
739+
{ description }
740+
</span>
723741
<div class="diagram" id={ id }>{ diagramSvg }</div>
724742
<div id="diagram-controls" class="hiddenContent">
725743
<button id="diagram-zoom-out" class="diagram-btn"><i class="material-icons">&#xE15B;</i></button>
@@ -773,6 +791,7 @@ trait EntityPage extends HtmlPage {
773791
def inside(hasLinks: Boolean, nameLink: String = ""): NodeSeq =
774792
<xml:group>
775793
<span class="modifier_kind">
794+
<i class="material-icons unfold-arrow">&#xE037;</i>
776795
<span class="modifier">{ mbr.flags.map(flag => inlineToHtml(flag.text) ++ scala.xml.Text(" ")) }</span>
777796
<span class="kind">{ kindToString(mbr) }</span>
778797
</span>

src/scaladoc/scala/tools/nsc/doc/html/resource/lib/template.css

Lines changed: 46 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -157,26 +157,41 @@ body.trait div#definition {
157157
user-select: none;
158158
}
159159

160-
.toggleContainer .toggle:before {
161-
cursor: pointer;
162-
padding-left: 15px;
163-
content: "▶";
160+
.toggleContainer .toggle > i {
164161
position: absolute;
165-
left: -2.7em;
162+
left: -1.5em;
166163
top: 0em;
164+
font-size: 1.3em;
165+
transition: 0.1s;
167166
}
168167

169-
.toggleContainer .toggle.open:before {
170-
content: "▼";
171-
position: absolute;
172-
left: -2.7em;
173-
top: 0em;
168+
.toggleContainer .toggle.open > i {
169+
transform: rotate(90deg);
174170
}
175171

176172
.toggleContainer .hiddenContent {
177173
margin-top: 1.5em;
178174
}
179175

176+
#memberfilter > i.arrow {
177+
position: absolute;
178+
top: 0.45em;
179+
left: -0.9em;
180+
color: #fff;
181+
font-size: 1.3em;
182+
opacity: 0;
183+
transition: 0.1s;
184+
cursor: pointer;
185+
}
186+
187+
#memberfilter > i.arrow.rotate {
188+
transform: rotate(90deg);
189+
}
190+
191+
#memberfilter:hover > i.arrow {
192+
opacity: 1;
193+
}
194+
180195
.value #definition {
181196
background-color: #103A51; /* blue */
182197
}
@@ -430,23 +445,20 @@ span.symbol > span.name {
430445
cursor: pointer;
431446
}
432447

433-
#template .closed:before {
434-
content: "▶";
435-
position: absolute;
436-
left: 1em;
437-
top: 0.35em;
438-
}
439-
440448
#template .opened {
441449
cursor: pointer;
442450
}
443451

444-
#template .opened:before {
445-
content: "▼";
452+
i.unfold-arrow {
453+
font-size: 1em;
446454
position: absolute;
447-
left: 1em;
448-
top: 0.35em;
449-
color: #2C475C;
455+
top: 0.55em;
456+
left: 0.7em;
457+
transition: 0.1s;
458+
}
459+
460+
#template .modifier_kind.opened > i.unfold-arrow {
461+
transform: rotate(90deg);
450462
}
451463

452464
#template .values .name {
@@ -469,12 +481,12 @@ span.symbol > span.name {
469481
top: 0;
470482
}
471483

472-
.full-signature-usecase > .signature > .closed:before {
473-
content: "" !important;
474-
}
475-
476-
.full-signature-usecase > .signature > .opened:before {
477-
content: "" !important;
484+
/* Hide unfold arrow where appropriate */
485+
#template li[fullComment=no] .modifier_kind > i.unfold-arrow,
486+
div#definition > h4#signature > span.modifier_kind > i.unfold-arrow,
487+
.full-signature-usecase > .signature > .closed > i.unfold-arrow,
488+
.full-signature-usecase > .signature > .opened > i.unfold-arrow {
489+
display: none;
478490
}
479491

480492
#template .full-signature-usecase > .signature > .closed {
@@ -810,11 +822,10 @@ div.fullcomment dl.paramcmts > dd {
810822
#memberfilter > .clear {
811823
display: none;
812824
position: absolute;
813-
top: 0.6em;
814-
right: -0.65em;
815-
height: 23px;
816-
width: 21px;
825+
top: 0.55em;
817826
color: rgba(255, 255, 255, 0.4);
827+
right: 0;
828+
font-size: 1.2em;
818829
}
819830

820831
#memberfilter > .clear:hover {
@@ -860,17 +871,16 @@ div.fullcomment dl.paramcmts > dd {
860871
left: 0.7em;
861872
}
862873

863-
#mbrsel > div.toggle:before {
874+
#mbrsel > div.toggle > i {
864875
cursor: pointer;
865-
content: "▶";
866876
position: absolute;
867877
left: 0;
868878
top: 0;
869879
color: #fff;
870880
}
871881

872-
#mbrsel > div.toggle.open:before {
873-
content: "▼";
882+
#mbrsel > div.toggle.open > i {
883+
transform: rotate(90deg);
874884
}
875885

876886
#mbrsel > div#filterby {

src/scaladoc/scala/tools/nsc/doc/html/resource/lib/template.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ $(document).ready(function() {
9292
return isHidden(this);
9393
}).removeClass("in").addClass("out");
9494

95-
$("#mbrsel > div.toggle").click(function() {
95+
$("#memberfilter > i.arrow").click(function() {
96+
$(this).toggleClass("rotate");
9697
$("#filterby").toggle();
9798
});
9899

@@ -311,7 +312,9 @@ $(document).ready(function() {
311312
});
312313

313314
$("#mbrsel-input").on("blur", function() {
314-
$("#memberfilter > .clear").hide();
315+
setTimeout(function() {
316+
$("#memberfilter > .clear").hide();
317+
}, 10);
315318
});
316319
});
317320

0 commit comments

Comments
 (0)