package dev.inmo.jsuikit.elements import androidx.compose.runtime.Composable import androidx.compose.runtime.snapshots.SnapshotStateList import dev.inmo.jsuikit.modifiers.* import dev.inmo.jsuikit.utils.Attrs import org.jetbrains.compose.web.dom.* import org.w3c.dom.HTMLHeadingElement import org.w3c.dom.HTMLUListElement @Composable fun List( data: Iterable, ukAttrs: Attrs = Attrs.empty(), elementAllocator: @Composable ElementScope.(T) -> Unit ) { Ul( { include(UIKitList) ukAttrs.builder(this) } ) { data.forEach { elementAllocator(it) } } } @Composable fun ListWithTitle( title: String, data: Iterable, vararg titleModifiers: UIKitModifier, ulModifiers: Array = emptyArray(), besidesTitleAndList: (@Composable () -> Unit)? = null, titleCustomizer: AttrBuilderContext = {}, ulCustomizer: AttrBuilderContext = {}, elementAllocator: @Composable ElementScope.(T) -> Unit ) { H4({ include(*titleModifiers); titleCustomizer() }) { Text(title) } besidesTitleAndList ?.invoke() List(data, Attrs(*ulModifiers) { ulCustomizer(this) }, elementAllocator) }