unbuildable version
This commit is contained in:
client/src/jsMain/kotlin/dev/inmo/postssystem/client/fsm/ui
features/content
client
src
jsMain
kotlin
dev
inmo
postssystem
features
content
client
text
client
gradle
kotlin-js-store
@ -13,6 +13,7 @@ kotlin {
|
||||
api project(":postssystem.features.content.text.common")
|
||||
api project(":postssystem.features.common.client")
|
||||
api project(":postssystem.features.content.client")
|
||||
api libs.microutils.common.compose
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,11 +3,16 @@ package dev.inmo.postssystem.features.content.text.client
|
||||
import androidx.compose.runtime.*
|
||||
import dev.inmo.jsuikit.modifiers.UIKitWidth
|
||||
import dev.inmo.jsuikit.modifiers.include
|
||||
import dev.inmo.micro_utils.common.compose.renderComposableAndLinkToRoot
|
||||
import dev.inmo.postssystem.features.common.common.*
|
||||
import dev.inmo.postssystem.features.content.client.ContentClientProvider
|
||||
import dev.inmo.postssystem.features.content.common.Content
|
||||
import dev.inmo.postssystem.features.content.text.common.TextContent
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import org.jetbrains.compose.web.dom.TextArea
|
||||
import org.jetbrains.compose.web.renderComposable
|
||||
import org.w3c.dom.HTMLElement
|
||||
|
||||
val loadingClientModule = ModuleLoader {
|
||||
singleWithRandomQualifier<ContentClientProvider> {
|
||||
@ -20,12 +25,17 @@ val loadingClientModule = ModuleLoader {
|
||||
object TextContentClientProvider : ContentClientProvider {
|
||||
override fun contentTypeNameForUser(): String = "Text"
|
||||
|
||||
override fun createNewContentRenderer(): ContentClientProvider.ContentRenderer {
|
||||
return ContentClientProvider.ContentRenderer.default<TextContent> @Composable { state ->
|
||||
TextArea(state.value ?. text ?: "") {
|
||||
override fun drawNewContent(root: HTMLElement): StateFlow<Content> {
|
||||
val flow = MutableStateFlow(TextContent(""))
|
||||
|
||||
renderComposableAndLinkToRoot(root) {
|
||||
val state = remember { flow.collectAsState() }
|
||||
TextArea(state.value.text) {
|
||||
include(UIKitWidth.Expand)
|
||||
onInput { state.value = TextContent(it.value) }
|
||||
onInput { flow.value = TextContent(it.value) }
|
||||
}
|
||||
}
|
||||
|
||||
return flow
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user