Trait

org.querki.gadgets.core

ManagedFrag

Related Doc: package core

Permalink

trait ManagedFrag[Output <: Node] extends Frag

A controlled wrapper around a Scalatags Frag, which gives you access to the lifecycle and the resulting DOM objects.

IMPORTANT: unlike pure ScalaTags, the Gadgets library assumes that Frags are single-use! That is, in conventional ScalaTags you can create a Frag or TypedTag and render it over and over, getting a new Node each time. By contrast, rendering a ManagedFrag records the resulting Node in its elemOptRx (also exposed as elemOpt or simply elem), and you are encouraged to use the rendered method instead if there is any risk of accessing it multiple times -- the idea is that you create a separate Frag for each bit, and render that once.

Note that a ManagedFrag corresponds to a DOM *Node*, which is almost anything: an Element, an Attribute, a Text, etc. A Gadget (which is a subclass of ManagedFrag) corresponds to a DOM Element.

In and of itself, ManagedFrag is a bit weak, but it is the basis of multiple forms of useful gadgetry.

Linear Supertypes
Frag, Frag[Element, Node], Modifier[Element], AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ManagedFrag
  2. Frag
  3. Frag
  4. Modifier
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def createFrag: Output

    Permalink

    Concrete classes must define this.

    Concrete classes must define this. It causes the actual DOM node to come into existence.

  2. abstract def onRendered(node: Output): Unit

    Permalink

    Subclasses can override this to define behaviour that happens in the middle of the render function.

    Subclasses can override this to define behaviour that happens in the middle of the render function. Generally used by infrastructure, not concrete classes.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def applyTo(parent: Element): Unit

    Permalink

    We intercept applyTo() (which is part of Scalatags), to record the parent of this Node.

    We intercept applyTo() (which is part of Scalatags), to record the parent of this Node.

    Definition Classes
    ManagedFrag → Frag → Modifier
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. def elem: Output

    Permalink

    Fetches the actual rendered DOM Node for this Frag.

    Fetches the actual rendered DOM Node for this Frag.

    IMPORTANT: this is convenient, but fundamentally unsafe! Only use it in places where you are *certain* that the Node has already been rendered; otherwise, use the safer elemOpt or elemOptRx!

  8. def elemOpt: Option[Output]

    Permalink
  9. val elemOptRx: Var[Option[Output]]

    Permalink

    An Rx member containing the actual Node iff it has been rendered.

  10. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  12. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  14. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  15. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  17. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  19. def onInserted(): Unit

    Permalink

    This is called immediately after this fragment is inserted into its parent, so that you can provide additional stuff that happens then.

  20. def parentOpt: Option[Element]

    Permalink
  21. val parentOptRx: Var[Option[Element]]

    Permalink

    The parent of the resulting Node, once it has been created.

  22. def render: Output

    Permalink

    We intercept render (which is part of Scalatags), to record the Node when it gets created, and to provide access to the creation event.

    We intercept render (which is part of Scalatags), to record the Node when it gets created, and to provide access to the creation event.

    IMPORTANT: this imperatively renders the Gadget; if you call it repeatedly, it will render again! Use rendered by preference most of the time.

    Definition Classes
    ManagedFrag → Frag → Frag
  23. def rendered: Output

    Permalink

    Lazy version of render().

    Lazy version of render(). This returns the rendered content of the Gadget, rendering if need be. This allows you to easily fetch the elem repeatedly, without worrying about re-rendering.

  24. def setElem(e: Output): ManagedFrag.this.type

    Permalink

    Slam the element for this Gadget.

    Slam the element for this Gadget. You should only call this iff the element was created from an external mechanism and you're building this Gadget around that element.

    This is intentionally designed for chaining, for ease of use -- it returns this Gadget.

  25. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  26. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  27. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Frag

Inherited from Frag[Element, Node]

Inherited from Modifier[Element]

Inherited from AnyRef

Inherited from Any

Ungrouped