improvements and fixes in Navbar and NavbarNav parts

This commit is contained in:
InsanusMokrassar 2022-05-19 18:43:11 +06:00
parent ec584798ad
commit 6a652249c0
2 changed files with 51 additions and 1 deletions

View File

@ -2,7 +2,9 @@ package dev.inmo.jsuikit.elements
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import dev.inmo.jsuikit.modifiers.* import dev.inmo.jsuikit.modifiers.*
import dev.inmo.jsuikit.utils.*
import org.jetbrains.compose.web.dom.* import org.jetbrains.compose.web.dom.*
import org.w3c.dom.HTMLDivElement
import org.w3c.dom.HTMLElement import org.w3c.dom.HTMLElement
@Composable @Composable
@ -20,9 +22,10 @@ fun Navbar(
} }
} }
@Deprecated("Will be removed soon. Use the variant with AttrsWithContentBuilders")
@Composable @Composable
fun Navbar( fun Navbar(
leftBuilder: NavbarNavBuilder? = null, leftBuilder: NavbarNavBuilder?,
centerBuilder: NavbarNavBuilder? = null, centerBuilder: NavbarNavBuilder? = null,
rightBuilder: NavbarNavBuilder? = null, rightBuilder: NavbarNavBuilder? = null,
vararg navModifiers: UIKitModifier, vararg navModifiers: UIKitModifier,
@ -45,3 +48,29 @@ fun Navbar(
} }
} }
} }
@Composable
fun Navbar(
leftBuilder: AttrsWithContentBuilder<HTMLDivElement>? = null,
centerBuilder: AttrsWithContentBuilder<HTMLDivElement>? = null,
rightBuilder: AttrsWithContentBuilder<HTMLDivElement>? = null,
vararg navModifiers: UIKitModifier,
attributesCustomizer: AttrBuilderContext<HTMLElement> = {},
) {
Navbar(
attributesCustomizer = {
include(*navModifiers)
attributesCustomizer()
}
) {
leftBuilder ?.let {
Div({ include(UIKitNavbar.Alignment.Left);leftBuilder.attributesBuilderContext(this) }, leftBuilder.builder)
}
centerBuilder ?.let {
Div({ include(UIKitNavbar.Alignment.Center);centerBuilder.attributesBuilderContext(this) }, centerBuilder.builder)
}
rightBuilder ?.let {
Div({ include(UIKitNavbar.Alignment.Right);rightBuilder.attributesBuilderContext(this) }, rightBuilder.builder)
}
}
}

View File

@ -2,11 +2,31 @@ package dev.inmo.jsuikit.elements
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import dev.inmo.jsuikit.modifiers.* import dev.inmo.jsuikit.modifiers.*
import dev.inmo.jsuikit.utils.*
import org.jetbrains.compose.web.attributes.AttrsScope import org.jetbrains.compose.web.attributes.AttrsScope
import org.jetbrains.compose.web.dom.* import org.jetbrains.compose.web.dom.*
import org.w3c.dom.HTMLLIElement import org.w3c.dom.HTMLLIElement
import org.w3c.dom.HTMLUListElement import org.w3c.dom.HTMLUListElement
@Composable
fun NavbarNav(
elements: List<AttrsWithContentBuilder<HTMLLIElement>>,
modifiers: List<UIKitModifier>,
attributesCustomizer: AttrBuilderContext<HTMLUListElement> = {}
) {
Ul(
{
include(UIKitNavbar.Nav, *modifiers.toTypedArray())
attributesCustomizer()
}
) {
elements.forEach { element ->
Li(element.attributesBuilderContext, element.builder)
}
}
}
@Deprecated("Will be removed soon. Use NavbarNavPart with AttrsWithContentBuilder instead")
interface NavbarNavElement { interface NavbarNavElement {
fun AttrsScope<HTMLLIElement>.setup() {} fun AttrsScope<HTMLLIElement>.setup() {}
@Composable @Composable
@ -27,6 +47,7 @@ interface NavbarNavElement {
} }
} }
@Deprecated("Will be removed soon. Use NavbarNavPart with AttrsWithContentBuilder instead")
class NavbarNavBuilder( class NavbarNavBuilder(
private val modifiers: Array<UIKitModifier>, private val modifiers: Array<UIKitModifier>,
private val elements: List<NavbarNavElement>, private val elements: List<NavbarNavElement>,