diff options
Diffstat (limited to 'src/main/scala/reading/component/widget/Input.scala')
-rw-r--r-- | src/main/scala/reading/component/widget/Input.scala | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/scala/reading/component/widget/Input.scala b/src/main/scala/reading/component/widget/Input.scala new file mode 100644 index 0000000..7dac47a --- /dev/null +++ b/src/main/scala/reading/component/widget/Input.scala @@ -0,0 +1,44 @@ +package reading.component.widget + +import scalatags.JsDom.all._ + +import org.scalajs.dom.KeyboardEvent +import org.scalajs.dom.html.Input + +import scalacss.Defaults._ +import scalacss.ScalatagsCss._ + +import rx._ + +import reading.component.widget.style.{ Input => InputStyle } + +object Input { + def apply( + style: StyleA, + query: Var[String], + label: String = "", + onEnter: => Unit = () + )( + implicit + ctx: Ctx.Owner + ): Frag = { + val inputBox = input( + InputStyle.render, + InputStyle.input, + style, + placeholder := label, + onkeyup := { (e: KeyboardEvent) => + val input = e.target.asInstanceOf[Input] + query() = input.value + input.value = input.value + if (e.keyCode == 13) onEnter + } + ).render + + query.trigger { + inputBox.value = query.now + } + + inputBox + } +} |