From 73a5fe6a277fd74a15ba32b858904a0d784b76a8 Mon Sep 17 00:00:00 2001 From: vmishenev Date: Mon, 16 Jan 2023 23:34:16 +0200 Subject: [PATCH] Hide headers for html on package pages --- .../kotlin/pages/contentNodeProperties.kt | 4 ++ .../kotlin/renderers/html/HtmlRenderer.kt | 9 ++++ .../documentables/DefaultPageCreator.kt | 44 +++++++++---------- .../documentables/PageContentBuilder.kt | 18 ++++---- .../src/main/resources/dokka/styles/style.css | 3 +- 5 files changed, 45 insertions(+), 33 deletions(-) diff --git a/core/src/main/kotlin/pages/contentNodeProperties.kt b/core/src/main/kotlin/pages/contentNodeProperties.kt index 756ac4f003..ca12146f2c 100644 --- a/core/src/main/kotlin/pages/contentNodeProperties.kt +++ b/core/src/main/kotlin/pages/contentNodeProperties.kt @@ -11,6 +11,10 @@ class SimpleAttr(val extraKey: String, val extraValue: String) : ExtraProperty, ExtraProperty.Key { + override val key: ExtraProperty.Key = this +} + const val TOGGLEABLE_CONTENT_TYPE_ATTR = "data-togglable" enum class BasicToggleableContentType : ToggleableContentType { TYPE, CONSTRUCTOR, FUNCTION, PROPERTY, ENTRY, EXTENSION, INHERITED_FUNCTION, INHERITED_PROPERTY diff --git a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt index 80418cb42c..8d7e746e25 100644 --- a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt +++ b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt @@ -56,6 +56,15 @@ open class HtmlRenderer( return sorted } + override fun ContentNode.build( + builder: FlowContent, + pageContext: ContentPage, + sourceSetRestriction: Set? + ) { + if(extra[HtmlInvisibleExtra] == null) + builder.buildContentNode(this, pageContext, sourceSetRestriction) + } + override fun FlowContent.wrapGroup( node: ContentGroup, pageContext: ContentPage, diff --git a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt index 4a3a34729c..5d7ac0f40d 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/DefaultPageCreator.kt @@ -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) { @@ -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 ) } } @@ -488,7 +488,7 @@ open class DefaultPageCreator( @Suppress("UNCHECKED_CAST") (constructorsToDocumented as List).sourceSets, needsAnchors = true, - renderHeader = true, + isVisibleHeader = true, extra = PropertyContainer.empty() + ToggleableContentTypeExtra( BasicToggleableContentType.CONSTRUCTOR ), @@ -633,13 +633,13 @@ open class DefaultPageCreator( name: String, toggleableContentType: ToggleableContentType, list: Collection, - renderHeader: Boolean = false + isVisibleHeader: Boolean = false ) = divergentBlock( name, list.sorted(), ContentKind.Functions, extra = mainExtra + ToggleableContentTypeExtra(toggleableContentType), - renderHeader = renderHeader + isVisibleHeader = isVisibleHeader ) private fun DocumentableContentBuilder.propertiesBlock( @@ -647,7 +647,7 @@ open class DefaultPageCreator( toggleableContentType: ToggleableContentType, list: Collection, sourceSets: Set, - renderHeader: Boolean = false + isVisibleHeader: Boolean = false ) { val groupedElements = list.groupBy { Pair(it.name, it.isExtension()) }.toList() val sortedGroupedElements = @@ -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 @@ -696,19 +696,19 @@ open class DefaultPageCreator( collection: Collection, kind: ContentKind, extra: PropertyContainer = 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") } diff --git a/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt b/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt index f497c6cc58..c326ef2ea5 100644 --- a/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt +++ b/plugins/base/src/main/kotlin/translators/documentables/PageContentBuilder.kt @@ -243,21 +243,21 @@ open class PageContentBuilder( needsSorting: Boolean = true, headers: List = emptyList(), needsAnchors: Boolean = false, - renderHeader: Boolean = false, + isVisibleHeader: Boolean = false, operation: DocumentableContentBuilder.(String, List) -> 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 diff --git a/plugins/base/src/main/resources/dokka/styles/style.css b/plugins/base/src/main/resources/dokka/styles/style.css index c0f7f713a6..5761c31d74 100644 --- a/plugins/base/src/main/resources/dokka/styles/style.css +++ b/plugins/base/src/main/resources/dokka/styles/style.css @@ -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; }