src/main/scala/net/tz/lift/snippet/Panel.scala
changeset 20 22424e6508cd
parent 3 61b9f48ce17d
child 21 9026ebb197e2
--- 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: