--- a/src/main/scala/net/tz/lift/snippet/Panel.scala Wed Aug 17 08:47:55 2011 +0200
+++ b/src/main/scala/net/tz/lift/snippet/Panel.scala Wed Aug 17 08:48:43 2011 +0200
@@ -46,12 +46,28 @@
new Panel(fields.map(AttrRow(_)))
}
-class Panel(attrs: => Iterable[AttrRow]) extends Function1[NodeSeq, NodeSeq]
-{
+class Panel(attrs: => Iterable[AttrRow]) extends CssTr {
def apply(in: NodeSeq): NodeSeq = <table>{attrs.map(_())}</table>
def &(other: Function1[NodeSeq, NodeSeq]) = new Function1[NodeSeq, NodeSeq] {
def apply(in: NodeSeq): NodeSeq = List(Panel.this, other) flatMap (_(in))
}
}
+import net.liftweb.http.TemplateFinder
+import net.liftweb.util.Helpers._ // CSS transforms
+
+/**
+ * A panel using template in <code>/templates-hidden/panel</code> for
+ * values rendering.
+ */
+class TplPanel(cells: List[(NodeSeq, NodeSeq)]) extends CssTr {
+ def apply(in: NodeSeq): NodeSeq = TemplateFinder.findAnyTemplate(
+ List("templates-hidden", "panel")) map { xml =>
+ (".row *" #> cells.map { r =>
+ ".n *" #> r._1 &
+ ".v *" #> r._2
+ })(xml)
+ } openOr NodeSeq.Empty
+}
+
// vim: set ts=2 sw=2 et: