30 lines
594 B
Scala
30 lines
594 B
Scala
package net.okennedy.cells.widgets
|
|
|
|
import com.raquo.laminar.api.L._
|
|
|
|
trait Widget
|
|
{
|
|
val root: com.raquo.laminar.nodes.ReactiveHtmlElement[org.scalajs.dom.html.Element]
|
|
}
|
|
|
|
object Widgets
|
|
{
|
|
val widgets = Var[List[Widget]](initial = Nil)
|
|
|
|
val root = div(
|
|
className("widgets"),
|
|
children <-- widgets.signal.map { _.map { _.root } }
|
|
)
|
|
|
|
def register(widget: Widget): Unit =
|
|
{
|
|
widgets.set(widget :: widgets.now())
|
|
}
|
|
|
|
def remove(widget: Widget): Unit =
|
|
{
|
|
|
|
println(s"Removing: $widget from ${widgets.now()}")
|
|
widgets.set(widgets.now().filter { _ ne widget })
|
|
}
|
|
} |