Skip to content

Commit

Permalink
Hide headers for html on package pages
Browse files Browse the repository at this point in the history
  • Loading branch information
vmishenev committed Jan 17, 2023
1 parent 2e42337 commit 92bdc27
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 33 deletions.
4 changes: 4 additions & 0 deletions core/src/main/kotlin/pages/contentNodeProperties.kt
Expand Up @@ -11,6 +11,10 @@ class SimpleAttr(val extraKey: String, val extraValue: String) : ExtraProperty<C
}
}

object HtmlInvisibleExtra : ExtraProperty<ContentNode>, ExtraProperty.Key<ContentNode, HtmlInvisibleExtra> {
override val key: ExtraProperty.Key<ContentNode, *> = this
}

const val TOGGLEABLE_CONTENT_TYPE_ATTR = "data-togglable"
enum class BasicToggleableContentType : ToggleableContentType {
TYPE, CONSTRUCTOR, FUNCTION, PROPERTY, ENTRY, EXTENSION, INHERITED_FUNCTION, INHERITED_PROPERTY
Expand Down
9 changes: 9 additions & 0 deletions plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt
Expand Up @@ -56,6 +56,15 @@ open class HtmlRenderer(
return sorted
}

override fun ContentNode.build(
builder: FlowContent,
pageContext: ContentPage,
sourceSetRestriction: Set<DisplaySourceSet>?
) {
if(extra[HtmlInvisibleExtra] == null)
builder.buildContentNode(this, pageContext, sourceSetRestriction)
}

override fun FlowContent.wrapGroup(
node: ContentGroup,
pageContext: ContentPage,
Expand Down
Expand Up @@ -337,7 +337,7 @@ open class DefaultPageCreator(
types,
ContentKind.Classlikes,
extra = mainExtra + ToggleableContentTypeExtra(BasicToggleableContentType.TYPE),
renderHeader = isClasslike
isVisibleHeader = isClasslike
)
val (extensionProps, extensionFuns) = extensions.splitPropsAndFuns()
if (separateInheritedMembers) {
Expand All @@ -351,30 +351,30 @@ open class DefaultPageCreator(
BasicToggleableContentType.PROPERTY,
memberProperties + extensionProperties,
sourceSets,
renderHeader = isClasslike
isVisibleHeader = isClasslike
)
propertiesBlock(
"Inherited properties",
BasicToggleableContentType.PROPERTY,
inheritedProperties + inheritedExtensionProperties,
sourceSets,
renderHeader = isClasslike
isVisibleHeader = isClasslike
)
functionsBlock("Functions", BasicToggleableContentType.FUNCTION, memberFunctions + extensionFunctions, renderHeader = isClasslike)
functionsBlock("Functions", BasicToggleableContentType.FUNCTION, memberFunctions + extensionFunctions, isVisibleHeader = isClasslike)
functionsBlock(
"Inherited functions",
BasicToggleableContentType.FUNCTION,
inheritedFunctions + inheritedExtensionFunctions,
renderHeader = isClasslike
isVisibleHeader = isClasslike
)
} else {
functionsBlock("Functions", BasicToggleableContentType.FUNCTION, functions + extensionFuns, renderHeader = isClasslike)
functionsBlock("Functions", BasicToggleableContentType.FUNCTION, functions + extensionFuns, isVisibleHeader = isClasslike)
propertiesBlock(
"Properties",
BasicToggleableContentType.PROPERTY,
properties + extensionProps,
sourceSets,
renderHeader = isClasslike
isVisibleHeader = isClasslike
)
}
}
Expand Down Expand Up @@ -488,7 +488,7 @@ open class DefaultPageCreator(
@Suppress("UNCHECKED_CAST")
(constructorsToDocumented as List<Documentable>).sourceSets,
needsAnchors = true,
renderHeader = true,
isVisibleHeader = true,
extra = PropertyContainer.empty<ContentNode>() + ToggleableContentTypeExtra(
BasicToggleableContentType.CONSTRUCTOR
),
Expand Down Expand Up @@ -633,21 +633,21 @@ open class DefaultPageCreator(
name: String,
toggleableContentType: ToggleableContentType,
list: Collection<DFunction>,
renderHeader: Boolean = false
isVisibleHeader: Boolean = false
) = divergentBlock(
name,
list.sorted(),
ContentKind.Functions,
extra = mainExtra + ToggleableContentTypeExtra(toggleableContentType),
renderHeader = renderHeader
isVisibleHeader = isVisibleHeader
)

private fun DocumentableContentBuilder.propertiesBlock(
name: String,
toggleableContentType: ToggleableContentType,
list: Collection<DProperty>,
sourceSets: Set<DokkaSourceSet>,
renderHeader: Boolean = false
isVisibleHeader: Boolean = false
) {
val groupedElements = list.groupBy { Pair(it.name, it.isExtension()) }.toList()
val sortedGroupedElements =
Expand All @@ -664,7 +664,7 @@ open class DefaultPageCreator(
headers = listOf(
headers("Name", "Summary")
),
renderHeader = renderHeader
isVisibleHeader = isVisibleHeader
) { key, props ->
val extra =
if (props.all { it.isExtension() }) mainExtra + ToggleableContentTypeExtra(BasicToggleableContentType.EXTENSION) else mainExtra
Expand Down Expand Up @@ -696,19 +696,19 @@ open class DefaultPageCreator(
collection: Collection<Documentable>,
kind: ContentKind,
extra: PropertyContainer<ContentNode> = mainExtra,
renderHeader: Boolean = false
isVisibleHeader: Boolean = false
) {
if (collection.any()) {
group(extra = extra) {
if (renderHeader) {
// corner case
val onlyExtensions = collection.all { it.isExtension() }
val headerExtra = if (onlyExtensions)
extra + ToggleableContentTypeExtra(BasicToggleableContentType.EXTENSION)
else
extra
header(2, name, kind = kind, extra = headerExtra) { }
}
// corner case
val onlyExtensions = collection.all { it.isExtension() }
val headerExtra = if (onlyExtensions)
extra + ToggleableContentTypeExtra(BasicToggleableContentType.EXTENSION)
else
extra
val headerExtraWithVisibility = if (isVisibleHeader) headerExtra else headerExtra + HtmlInvisibleExtra
header(2, name, kind = kind, extra = headerExtraWithVisibility) { }

table(kind, extra = extra, styles = emptySet()) {
header {
group { text("Name") }
Expand Down
Expand Up @@ -243,21 +243,21 @@ open class PageContentBuilder(
needsSorting: Boolean = true,
headers: List<ContentGroup> = emptyList(),
needsAnchors: Boolean = false,
renderHeader: Boolean = false,
isVisibleHeader: Boolean = false,
operation: DocumentableContentBuilder.(String, List<Documentable>) -> Unit
) {

if (renderWhenEmpty || groupedElements.any()) {
group(extra = extra) {
if (renderHeader) {

// corner case
val onlyExtensions = groupedElements.all { it.second.all { it.isExtension() } }
val headerExtra = if (onlyExtensions)
extra + ToggleableContentTypeExtra(BasicToggleableContentType.EXTENSION)
else
extra
header(level, name, kind = kind, extra = headerExtra) { }
}
val onlyExtensions = groupedElements.all { it.second.all { it.isExtension() } }
val headerExtra = if (onlyExtensions)
extra + ToggleableContentTypeExtra(BasicToggleableContentType.EXTENSION)
else
extra
val headerExtraWithVisibility = if (isVisibleHeader) headerExtra else headerExtra + HtmlInvisibleExtra
header(level, name, kind = kind, extra = headerExtraWithVisibility) { }
contents += ContentTable(
header = headers,
children = groupedElements
Expand Down
3 changes: 1 addition & 2 deletions plugins/base/src/main/resources/dokka/styles/style.css
Expand Up @@ -942,8 +942,7 @@ td.content {
}

.platform-hinted > .content:not([data-active]),
.tabs-section-body *[data-togglable]:not([data-active]),
.tabs-section-body > *:not([data-active]) {
.tabs-section-body *[data-togglable]:not([data-active]) {
display: none;
}

Expand Down
2 changes: 2 additions & 0 deletions plugins/base/src/test/kotlin/utils/contentUtils.kt
Expand Up @@ -199,6 +199,7 @@ fun ContentMatcherBuilder<*>.propertySignature(
group {
skipAllNotMatching()
tab(BasicToggleableContentType.PROPERTY) {
header{ + "Properties" }
table {
group {
link { +name }
Expand Down Expand Up @@ -242,6 +243,7 @@ fun ContentMatcherBuilder<*>.typealiasSignature(name: String, expressionTarget:
group {
group {
tab(BasicToggleableContentType.TYPE) {
header{ + "Types" }
table {
group {
link { +name }
Expand Down

0 comments on commit 92bdc27

Please sign in to comment.