aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/component/widget/Input.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/reading/component/widget/Input.scala')
-rw-r--r--src/main/scala/reading/component/widget/Input.scala44
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
+ }
+}