Skip to content

Commit 8cd745c

Browse files
authored
Merge pull request #14 from tayloraswift/hide-long-topics
hide 'See Also' lists by default if they contain more than 12 members
2 parents 71f5119 + ae4f697 commit 8cd745c

File tree

5 files changed

+132
-12
lines changed

5 files changed

+132
-12
lines changed

Assets/css/Main.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/css/Main.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/UnidocPages/Groups/Inliner.Groups.swift

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ extension Inliner.Groups
153153
}
154154
}
155155
}
156+
156157
extension Inliner.Groups:HyperTextOutputStreamable
157158
{
158159
static
@@ -176,23 +177,56 @@ extension Inliner.Groups:HyperTextOutputStreamable
176177
{
177178
html[.section, { $0.class = "group topic" }]
178179
{
179-
if let principal:Unidoc.Scalar = self.inliner.masters.principal,
180-
group.members.contains(.scalar(principal))
181-
{
182-
$0[.h2] = "See Also"
183-
}
180+
guard
181+
let principal:Unidoc.Scalar = self.inliner.masters.principal,
182+
group.members.contains(.scalar(principal))
184183
else
185184
{
186185
$0 ?= group.overview.map(self.inliner.passage(overview:))
186+
187+
$0[.ul]
188+
{
189+
self.inliner.list(members: group.members, to: &$0)
190+
}
191+
return
187192
}
188-
$0[.ul]
193+
194+
$0[.h2] = "See Also"
195+
196+
if group.members.count < 13
189197
{
190-
for member:Volume.Link in group.members
198+
$0[.ul]
191199
{
192-
switch member
200+
self.inliner.list(members: group.members, to: &$0)
201+
}
202+
}
203+
else
204+
{
205+
$0[.details]
206+
{
207+
$0[.summary]
208+
{
209+
$0[.p] { $0.class = "view" } = "View members"
210+
211+
$0[.p] { $0.class = "hide" } = "Hide members"
212+
213+
$0[.p, { $0.class = "reason" }]
214+
{
215+
$0 += """
216+
This section is hidden by default because it contains too many \
217+
218+
"""
219+
220+
$0[.span] { $0.class = "count" } = "(\(group.members.count))"
221+
222+
$0 += """
223+
members.
224+
"""
225+
}
226+
}
227+
$0[.ul]
193228
{
194-
case .scalar(let scalar): $0 ?= self.inliner.card(scalar)
195-
case .text(let text): $0[.li] { $0[.span] { $0[.code] = text } }
229+
self.inliner.list(members: group.members, to: &$0)
196230
}
197231
}
198232
}

Sources/UnidocPages/Inlining/Inliner.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,23 @@ extension Inliner
8282
}
8383
}
8484
extension Inliner
85+
{
86+
func list(members:[Volume.Link], to list:inout HTML.ContentEncoder)
87+
{
88+
for member:Volume.Link in members
89+
{
90+
switch member
91+
{
92+
case .scalar(let scalar):
93+
list ?= self.card(scalar)
94+
95+
case .text(let text):
96+
list[.li] { $0[.span] { $0[.code] = text } }
97+
}
98+
}
99+
}
100+
}
101+
extension Inliner
85102
{
86103
func vectorLink<Display, Scalars>(
87104
components display:Display,

Stylesheets/_Groups.scss

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,72 @@
1+
// Collapsed groups
2+
section.group
3+
{
4+
details
5+
{
6+
summary
7+
{
8+
cursor: pointer;
9+
10+
display: flex;
11+
flex-flow: column nowrap;
12+
align-items: center;
13+
14+
text-align: center;
15+
16+
p
17+
{
18+
margin: 0;
19+
}
20+
21+
p.view,
22+
p.hide
23+
{
24+
font-family: $typeface-sans;
25+
font-weight: 700;
26+
font-size: 125%;
27+
28+
}
29+
30+
p.hide
31+
{
32+
display: none;
33+
}
34+
35+
p.reason
36+
{
37+
margin-top: 0.5rem;
38+
font-style: italic;
39+
color: $light-foreground-semi;
40+
41+
span.count
42+
{
43+
font-style: normal;
44+
}
45+
}
46+
}
47+
48+
summary::marker
49+
{
50+
content: '';
51+
}
52+
}
53+
details[open]
54+
{
55+
summary
56+
{
57+
p.view,
58+
p.reason
59+
{
60+
display: none;
61+
}
62+
63+
p.hide
64+
{
65+
display: block;
66+
}
67+
}
68+
}
69+
}
170
// Generic constraints
271
section.group code.constraints
372
{

0 commit comments

Comments
 (0)