2022-11-15 12:53:59 +00:00
|
|
|
package dev.inmo.kmppscriptbuilder.core.ui
|
|
|
|
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
import androidx.compose.runtime.mutableStateListOf
|
|
|
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
|
|
|
|
|
|
|
expect class ListViewDrawer<T>() : Drawer<ListView<T>>
|
|
|
|
|
2022-11-15 13:55:54 +00:00
|
|
|
abstract class ListView<T>(title: String) : VerticalView(title) {
|
2022-11-15 12:53:59 +00:00
|
|
|
internal val itemsList = mutableStateListOf<T>()
|
|
|
|
|
|
|
|
internal open val addItemText: String = "Add"
|
|
|
|
internal open val removeItemText: String = "Remove"
|
|
|
|
|
|
|
|
internal abstract fun createItem(): T
|
|
|
|
@Composable
|
|
|
|
internal abstract fun buildView(item: T)
|
|
|
|
|
|
|
|
protected val drawer = ListViewDrawer<T>()
|
|
|
|
|
2022-11-15 18:56:24 +00:00
|
|
|
override val content: @Composable () -> Unit = {
|
2022-11-15 13:55:54 +00:00
|
|
|
with(drawer) {
|
|
|
|
draw()
|
2022-11-15 12:53:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|