Fix JS config editor for properties without defaults
This commit is contained in:
parent
cae3ab00d9
commit
e01a688664
@ -24,7 +24,7 @@ fun Page<Solid>.demo(name: String, title: String = name, block: SolidGroup.() ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
val canvasOptions = Canvas3DOptions {
|
val canvasOptions = Canvas3DOptions {
|
||||||
minSize = 500
|
minSize = 600
|
||||||
axes {
|
axes {
|
||||||
size = 500.0
|
size = 500.0
|
||||||
visible = true
|
visible = true
|
||||||
|
@ -66,7 +66,7 @@ class ThreeDemoGrid(element: Element, idPrefix: String = "") : Page<Solid> {
|
|||||||
id = name.toString()
|
id = name.toString()
|
||||||
role = "tabpanel"
|
role = "tabpanel"
|
||||||
attributes["aria-labelledby"] = "tab[$name]"
|
attributes["aria-labelledby"] = "tab[$name]"
|
||||||
div("container w-100 h-100") { id = "output-$name" }.also {element->
|
div("w-100 h-100") { id = "output-$name" }.also {element->
|
||||||
output = three.createCanvas(element, canvasOptions)
|
output = three.createCanvas(element, canvasOptions)
|
||||||
}
|
}
|
||||||
hr()
|
hr()
|
||||||
|
@ -37,9 +37,10 @@ public external interface ConfigEditorItemProps : RProps {
|
|||||||
public var descriptor: NodeDescriptor?
|
public var descriptor: NodeDescriptor?
|
||||||
}
|
}
|
||||||
|
|
||||||
private val ConfigEditorItem: FunctionalComponent<ConfigEditorItemProps> = functionalComponent("ConfigEditorItem") { props ->
|
private val ConfigEditorItem: FunctionalComponent<ConfigEditorItemProps> =
|
||||||
|
functionalComponent("ConfigEditorItem") { props ->
|
||||||
configEditorItem(props)
|
configEditorItem(props)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun RBuilder.configEditorItem(props: ConfigEditorItemProps) {
|
private fun RBuilder.configEditorItem(props: ConfigEditorItemProps) {
|
||||||
var expanded: Boolean by useState { true }
|
var expanded: Boolean by useState { true }
|
||||||
@ -82,8 +83,9 @@ private fun RBuilder.configEditorItem(props: ConfigEditorItemProps) {
|
|||||||
update()
|
update()
|
||||||
}
|
}
|
||||||
|
|
||||||
when (actualItem) {
|
|
||||||
is MetaItem.NodeItem -> {
|
|
||||||
|
if (actualItem is MetaItem.NodeItem) {
|
||||||
styledDiv {
|
styledDiv {
|
||||||
css {
|
css {
|
||||||
+TreeStyles.treeLeaf
|
+TreeStyles.treeLeaf
|
||||||
@ -141,8 +143,7 @@ private fun RBuilder.configEditorItem(props: ConfigEditorItemProps) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
is MetaItem.ValueItem -> {
|
|
||||||
styledDiv {
|
styledDiv {
|
||||||
css {
|
css {
|
||||||
+TreeStyles.treeLeaf
|
+TreeStyles.treeLeaf
|
||||||
@ -187,7 +188,6 @@ private fun RBuilder.configEditorItem(props: ConfigEditorItemProps) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public external interface ConfigEditorProps : RProps {
|
public external interface ConfigEditorProps : RProps {
|
||||||
@ -210,7 +210,12 @@ public val ConfigEditor: FunctionalComponent<ConfigEditorProps> = functionalComp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun Element.configEditor(config: Config, descriptor: NodeDescriptor? = null, default: Meta? = null, key: Any? = null) {
|
public fun Element.configEditor(
|
||||||
|
config: Config,
|
||||||
|
descriptor: NodeDescriptor? = null,
|
||||||
|
default: Meta? = null,
|
||||||
|
key: Any? = null,
|
||||||
|
) {
|
||||||
render(this) {
|
render(this) {
|
||||||
child(ConfigEditor) {
|
child(ConfigEditor) {
|
||||||
attrs {
|
attrs {
|
||||||
@ -223,7 +228,12 @@ public fun Element.configEditor(config: Config, descriptor: NodeDescriptor? = nu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun RBuilder.configEditor(config: Config, descriptor: NodeDescriptor? = null, default: Meta? = null, key: Any? = null) {
|
public fun RBuilder.configEditor(
|
||||||
|
config: Config,
|
||||||
|
descriptor: NodeDescriptor? = null,
|
||||||
|
default: Meta? = null,
|
||||||
|
key: Any? = null,
|
||||||
|
) {
|
||||||
child(ConfigEditor) {
|
child(ConfigEditor) {
|
||||||
attrs {
|
attrs {
|
||||||
this.key = key?.toString() ?: ""
|
this.key = key?.toString() ?: ""
|
||||||
|
@ -61,6 +61,8 @@ public val ThreeCanvasComponent: FunctionalComponent<ThreeCanvasProps> = functio
|
|||||||
minWidth = 500.px
|
minWidth = 500.px
|
||||||
minHeight = 500.px
|
minHeight = 500.px
|
||||||
display = Display.inherit
|
display = Display.inherit
|
||||||
|
width = 100.pct
|
||||||
|
height = 100.pct
|
||||||
flex(1.0, 1.0, FlexBasis.auto)
|
flex(1.0, 1.0, FlexBasis.auto)
|
||||||
}
|
}
|
||||||
ref = elementRef
|
ref = elementRef
|
||||||
|
@ -117,14 +117,14 @@ public class ThreePlugin : AbstractPlugin(), HtmlVisionBinding<Solid> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public fun createCanvas(
|
public fun createCanvas(
|
||||||
element: HTMLElement,
|
element: Element,
|
||||||
options: Canvas3DOptions = Canvas3DOptions.empty(),
|
options: Canvas3DOptions = Canvas3DOptions.empty(),
|
||||||
): ThreeCanvas = ThreeCanvas(this, options).apply {
|
): ThreeCanvas = ThreeCanvas(this, options).apply {
|
||||||
attach(element)
|
attach(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun bind(element: Element, vision: Solid) {
|
override fun bind(element: Element, vision: Solid) {
|
||||||
TODO("Not yet implemented")
|
createCanvas(element).render(vision)
|
||||||
}
|
}
|
||||||
|
|
||||||
public companion object : PluginFactory<ThreePlugin> {
|
public companion object : PluginFactory<ThreePlugin> {
|
||||||
|
Loading…
Reference in New Issue
Block a user