57 lines
1.1 KiB
Scala
57 lines
1.1 KiB
Scala
package net.okennedy.cells.widgets
|
|
|
|
import org.scalajs.dom
|
|
import com.raquo.laminar.api.L._
|
|
import com.raquo.laminar.nodes.ReactiveHtmlElement
|
|
|
|
class FormulaEditor(x: Int, y: Int)
|
|
extends Widget
|
|
{
|
|
val formula = Var[String](initial = "Hihihihi")
|
|
|
|
val inputArea =
|
|
input(
|
|
className("inputArea"),
|
|
`type`("text"),
|
|
controlled(
|
|
value <-- formula,
|
|
onInput.mapToValue --> formula.writer
|
|
)
|
|
)
|
|
|
|
def cancel(): Unit =
|
|
{
|
|
println("Cancelled")
|
|
}
|
|
|
|
def accept(): Unit =
|
|
{
|
|
println(s"Accepted with ${formula.now()}")
|
|
}
|
|
|
|
val root =
|
|
div(
|
|
className("formulaEditor"),
|
|
styleAttr(s"left: ${x}px; top: ${y}px"),
|
|
div(
|
|
className("pointer"),
|
|
Icon("caret-up")
|
|
),
|
|
div(
|
|
className("editorBody"),
|
|
inputArea,
|
|
div( className("cancel button"), Icon("times"),
|
|
onClick --> { evt => cancel() }
|
|
),
|
|
div( className("accept button"), Icon("check"),
|
|
onClick --> { evt => accept() }
|
|
)
|
|
)
|
|
)
|
|
}
|
|
|
|
object FormulaEditor
|
|
{
|
|
def apply(x: Int, y: Int) =
|
|
Widgets.register(new FormulaEditor(x, y))
|
|
} |