mirror of
https://github.com/InsanusMokrassar/JSUIKitKBindings.git
synced 2024-11-30 05:58:45 +00:00
fixes in DropAre and new type of attrs
This commit is contained in:
parent
c720973bfc
commit
f77c21ac51
@ -3,6 +3,7 @@ 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.Attrs
|
import dev.inmo.jsuikit.utils.Attrs
|
||||||
|
import dev.inmo.jsuikit.utils.InputAttrs
|
||||||
import org.jetbrains.compose.web.attributes.InputType
|
import org.jetbrains.compose.web.attributes.InputType
|
||||||
import org.jetbrains.compose.web.dom.*
|
import org.jetbrains.compose.web.dom.*
|
||||||
import org.w3c.dom.HTMLDivElement
|
import org.w3c.dom.HTMLDivElement
|
||||||
@ -11,7 +12,7 @@ import org.w3c.dom.HTMLInputElement
|
|||||||
@Composable
|
@Composable
|
||||||
fun DropArea(
|
fun DropArea(
|
||||||
attrs: Attrs<HTMLDivElement> = Attrs.empty(),
|
attrs: Attrs<HTMLDivElement> = Attrs.empty(),
|
||||||
inputAttrs: Attrs<HTMLInputElement> = Attrs.empty(),
|
inputAttrs: InputAttrs<String> = Attrs.empty(),
|
||||||
contentBuilder: ContentBuilder<HTMLDivElement> = {}
|
contentBuilder: ContentBuilder<HTMLDivElement> = {}
|
||||||
) = Div(
|
) = Div(
|
||||||
{
|
{
|
||||||
@ -19,6 +20,8 @@ fun DropArea(
|
|||||||
attrs.builder(this)
|
attrs.builder(this)
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Input(InputType.File, attrs = { inputAttrs.builder.invoke(this) })
|
FileInput {
|
||||||
|
inputAttrs.builder.invoke(this)
|
||||||
|
}
|
||||||
contentBuilder(this)
|
contentBuilder(this)
|
||||||
}
|
}
|
||||||
|
@ -3,19 +3,22 @@ package dev.inmo.jsuikit.utils
|
|||||||
import dev.inmo.jsuikit.modifiers.UIKitModifier
|
import dev.inmo.jsuikit.modifiers.UIKitModifier
|
||||||
import dev.inmo.jsuikit.modifiers.include
|
import dev.inmo.jsuikit.modifiers.include
|
||||||
import org.jetbrains.compose.web.attributes.AttrsBuilder
|
import org.jetbrains.compose.web.attributes.AttrsBuilder
|
||||||
|
import org.jetbrains.compose.web.attributes.InputType
|
||||||
|
import org.jetbrains.compose.web.attributes.builders.InputAttrsBuilder
|
||||||
import org.jetbrains.compose.web.dom.AttrBuilderContext
|
import org.jetbrains.compose.web.dom.AttrBuilderContext
|
||||||
import org.w3c.dom.Element
|
import org.w3c.dom.Element
|
||||||
|
import org.w3c.dom.HTMLInputElement
|
||||||
|
|
||||||
class AttributesCollection<T : Element> (
|
class AttributesCollection<T : Element, Builder : AttrsBuilder<T>> (
|
||||||
private vararg val modifiers: UIKitModifier,
|
private vararg val modifiers: UIKitModifier,
|
||||||
private val attrs: AttrBuilderContext<T> = {}
|
private val attrs: Builder.() -> Unit = {}
|
||||||
) {
|
) {
|
||||||
val builder: AttrBuilderContext<T> = {
|
val builder: Builder.() -> Unit = {
|
||||||
include(*modifiers)
|
include(*modifiers)
|
||||||
attrs()
|
attrs()
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun plus(other: AttributesCollection<T>) = AttributesCollection<T>(
|
operator fun plus(other: AttributesCollection<T, Builder>) = AttributesCollection<T, Builder>(
|
||||||
*(modifiers + other.modifiers).distinct().toTypedArray()
|
*(modifiers + other.modifiers).distinct().toTypedArray()
|
||||||
) {
|
) {
|
||||||
this@AttributesCollection.attrs.invoke(this)
|
this@AttributesCollection.attrs.invoke(this)
|
||||||
@ -26,8 +29,9 @@ class AttributesCollection<T : Element> (
|
|||||||
val Empty = Attrs<Element>()
|
val Empty = Attrs<Element>()
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
fun <T : Element> empty() = Empty as Attrs<T>
|
fun <T : Element, Builder : AttrsBuilder<T>> empty() = Empty as AttributesCollection<T, Builder>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typealias Attrs<T> = AttributesCollection<T>
|
typealias Attrs<T> = AttributesCollection<T, AttrsBuilder<T>>
|
||||||
|
typealias InputAttrs<T> = AttributesCollection<HTMLInputElement, InputAttrsBuilder<T>>
|
||||||
|
Loading…
Reference in New Issue
Block a user