JSUIKitKBindings/src/jsMain/kotlin/dev/inmo/jsuikit/elements/Table.kt

53 lines
1.4 KiB
Kotlin
Raw Normal View History

2022-01-12 10:27:49 +00:00
package dev.inmo.jsuikit.elements
2021-12-22 08:38:12 +00:00
import androidx.compose.runtime.Composable
import androidx.compose.runtime.snapshots.SnapshotStateList
2022-01-12 13:58:52 +00:00
import dev.inmo.jsuikit.modifiers.*
2021-12-22 08:38:12 +00:00
import org.jetbrains.compose.web.dom.*
2022-01-13 15:36:39 +00:00
import org.jetbrains.compose.web.dom.Text
import org.w3c.dom.*
2021-12-22 08:38:12 +00:00
@Composable
fun <T> DefaultTable(
heading: List<String>,
dataList: SnapshotStateList<T>,
vararg tableModifiers: UIKitModifier,
attributesCustomizer: AttrBuilderContext<HTMLTableElement> = {},
2022-01-13 15:36:39 +00:00
headingCustomizer: AttrBuilderContext<HTMLTableCellElement> = {},
2021-12-22 08:38:12 +00:00
cellFiller: @Composable (i: Int, t: T) -> Unit
) {
val headingIndexes = heading.indices
Table(
{
classes("uk-table")
include(*tableModifiers)
attributesCustomizer()
2021-12-22 08:38:12 +00:00
}
) {
Thead {
Tr {
heading.forEach {
Th(
{
2022-01-13 15:36:39 +00:00
headingCustomizer()
2021-12-22 08:38:12 +00:00
}
) {
Text(it)
}
}
}
}
Tbody {
dataList.forEach {
Tr {
headingIndexes.forEach { i ->
Td {
cellFiller(i, it)
}
}
}
}
}
}
}