Skip to content

Commit afbb11b

Browse files
author
ageery
committed
Added two more wicket tags: input and form
1 parent 2df218b commit afbb11b

File tree

5 files changed

+120
-2
lines changed

5 files changed

+120
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package dev.bombinating.bianmen.dsl.tag
2+
3+
import dev.bombinating.bianmen.ComponentExt.wicketIdAttr
4+
import dev.bombinating.bianmen.dsl.WicketTag
5+
import kotlinx.html.FORM
6+
import kotlinx.html.FlowContent
7+
import kotlinx.html.TagConsumer
8+
import kotlinx.html.attributesMapOf
9+
import kotlinx.html.visit
10+
import org.apache.wicket.Component
11+
12+
public class WicketForm(
13+
override val component: Component,
14+
initialAttributes: Map<String, String>,
15+
consumer: TagConsumer<*>
16+
) : FORM(initialAttributes = initialAttributes, consumer = consumer),
17+
WicketTag {
18+
19+
public companion object {
20+
21+
public fun FlowContent.form(
22+
component: Component,
23+
classes: String? = null,
24+
block: WicketForm.() -> Unit = {}
25+
): Unit =
26+
WicketForm(
27+
component = component,
28+
initialAttributes = attributesMapOf("class", classes, wicketIdAttr, component.id),
29+
consumer = consumer
30+
).visit(block)
31+
32+
}
33+
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package dev.bombinating.bianmen.dsl.tag
2+
3+
import dev.bombinating.bianmen.ComponentExt.wicketIdAttr
4+
import dev.bombinating.bianmen.dsl.WicketTag
5+
import kotlinx.html.FlowContent
6+
import kotlinx.html.INPUT
7+
import kotlinx.html.TagConsumer
8+
import kotlinx.html.attributesMapOf
9+
import kotlinx.html.visit
10+
import org.apache.wicket.Component
11+
12+
public class WicketInput(
13+
override val component: Component,
14+
initialAttributes: Map<String, String>,
15+
consumer: TagConsumer<*>
16+
) : INPUT(initialAttributes = initialAttributes, consumer = consumer),
17+
WicketTag {
18+
19+
public companion object {
20+
21+
public fun FlowContent.input(
22+
component: Component,
23+
classes: String? = null,
24+
block: WicketInput.() -> Unit = {}
25+
): Unit =
26+
WicketInput(
27+
component = component,
28+
initialAttributes = attributesMapOf("class", classes, wicketIdAttr, component.id),
29+
consumer = consumer
30+
).visit(block)
31+
32+
}
33+
34+
}

bianmen-core/src/test/kotlin/dev/bombianating/bianmen/dsl/DslPanelTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class DslPanelTest : AbstractWicketTest() {
2626
tester.assertComponent("$COMP_ID:test", WebMarkupContainer::class.java)
2727
}
2828
}
29+
2930
@Test
3031
fun `nested element test`() {
3132
object : DslPanel(id = COMP_ID) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package dev.bombianating.bianmen.dsl.tag
2+
3+
import dev.bombianating.bianmen.AbstractWicketTest
4+
import dev.bombinating.bianmen.ModelExt.model
5+
import dev.bombinating.bianmen.dsl.DslPanel
6+
import dev.bombinating.bianmen.dsl.tag.PanelTag
7+
import dev.bombinating.bianmen.dsl.tag.WicketForm.Companion.form
8+
import dev.bombinating.bianmen.dsl.tag.WicketInput.Companion.input
9+
import dev.bombinating.bianmen.factory.FormFactory.form
10+
import dev.bombinating.bianmen.factory.TextFieldFactory.textField
11+
import kotlinx.html.InputType
12+
import org.apache.wicket.markup.html.form.Form
13+
import org.apache.wicket.markup.html.form.TextField
14+
import org.apache.wicket.markup.html.panel.Panel
15+
import kotlin.streams.toList
16+
import kotlin.test.Test
17+
import kotlin.test.assertEquals
18+
import kotlin.test.assertNotNull
19+
20+
class WicketInputTest : AbstractWicketTest() {
21+
22+
@Test
23+
fun `input text test`() {
24+
object : DslPanel(id = COMP_ID) {
25+
override val contents: PanelTag.() -> Unit = {
26+
val model = "test".model()
27+
form(component = form(model = model)) {
28+
input(component = textField(model = model)) {
29+
type = InputType.text
30+
}
31+
}
32+
}
33+
}.test {
34+
val panel = tester.getComponentFromLastRenderedPage(COMP_ID) as Panel
35+
val panelChildren = panel.streamChildren().toList()
36+
assertEquals(2, panelChildren.size)
37+
val form = panelChildren.firstOrNull { it is Form<*> } as Form<*>
38+
val textField = panelChildren.firstOrNull { it is TextField<*> } as TextField<*>
39+
assertNotNull(form)
40+
assertNotNull(textField)
41+
assertEquals(panel, form.parent)
42+
assertEquals(form, textField.parent)
43+
}
44+
}
45+
46+
}

build.gradle.kts

+5-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ subprojects {
4545
/*
4646
* Kotlin
4747
*/
48-
implementation(kotlin("stdlib"))
48+
implementation(kotlin("stdlib-jdk8"))
4949
/*
5050
* Wicket
5151
*/
@@ -56,7 +56,10 @@ subprojects {
5656
/*
5757
* Kotlin HTML DSL
5858
*/
59-
implementation(group = "org.jetbrains.kotlinx", name = "kotlinx-html-jvm", version = kotlinxHtmlVersion)
59+
implementation(group = "org.jetbrains.kotlinx", name = "kotlinx-html-jvm", version = kotlinxHtmlVersion) {
60+
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-jdk8")
61+
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-common")
62+
}
6063
/*
6164
* Testing
6265
*/

0 commit comments

Comments
 (0)