changeset 2080:f05fcb206571

More HTML5 AJAX widgets
author Adam Chlipala <adam@chlipala.net>
date Sun, 16 Nov 2014 15:20:13 -0500
parents e1879ded8095
children d4ed20beb93b 794017f378de
files lib/js/urweb.js lib/ur/basis.urs src/monoize.sml src/urweb.grm tests/html5_cforms.ur
diffstat 5 files changed, 80 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lib/js/urweb.js	Sun Nov 16 15:03:29 2014 -0500
+++ b/lib/js/urweb.js	Sun Nov 16 15:20:13 2014 -0500
@@ -1078,6 +1078,39 @@
     return inpt("color", s, name);
 }
 
+function number(s, name) {
+    return inpt("number", s, name);
+}
+
+function range(s, name) {
+    return inpt("range", s, name);
+}
+
+function date(s, name) {
+    return inpt("date", s, name);
+}
+
+function datetime(s, name) {
+    return inpt("datetime", s, name);
+}
+
+function datetime_local(s, name) {
+    return inpt("datetime-local", s, name);
+}
+
+function month(s, name) {
+    return inpt("month", s, name);
+}
+
+function week(s, name) {
+    return inpt("week", s, name);
+}
+
+function time(s, name) {
+    return inpt("time", s, name);
+}
+
+
 function selectValue(x) {
     if (x.options.length == 0)
         return "";
--- a/lib/ur/basis.urs	Sun Nov 16 15:03:29 2014 -0500
+++ b/lib/ur/basis.urs	Sun Nov 16 15:20:13 2014 -0500
@@ -1047,6 +1047,15 @@
 val ctel : ctext
 val ccolor : ctext
 
+val cnumber : cformTag ([Source = source float, Value = float, Min = float, Max = float, Step = float, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+val crange : cformTag ([Source = source float, Value = float, Min = float, Max = float, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+val cdate : cformTag ([Source = source string, Value = string, Min = string, Max = string, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+val cdatetime : cformTag ([Source = source string, Value = string, Min = string, Max = string, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+val cdatetime_local : cformTag ([Source = source string, Value = string, Min = string, Max = string, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+val cmonth : cformTag ([Source = source string, Value = string, Min = string, Max = string, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+val cweek : cformTag ([Source = source string, Value = string, Min = string, Max = string, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+val ctime : cformTag ([Source = source string, Value = string, Min = string, Max = string, Size = int, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
+
 val button : cformTag ([Value = string] ++ boxAttrs) []
 
 val ccheckbox : cformTag ([Value = bool, Size = int, Source = source bool, Onchange = transaction unit] ++ boxAttrs ++ inputAttrs) []
--- a/src/monoize.sml	Sun Nov 16 15:03:29 2014 -0500
+++ b/src/monoize.sml	Sun Nov 16 15:20:13 2014 -0500
@@ -3757,6 +3757,15 @@
                       | "ctel" => cinput ("tel", "tel")
                       | "ccolor" => cinput ("color", "color")
 
+                      | "cnumber" => cinput ("number", "number")
+                      | "crange" => cinput ("range", "range")
+                      | "cdate" => cinput ("date", "date")
+                      | "cdatetime" => cinput ("datetime", "datetime")
+                      | "cdatetime_local" => cinput ("datetime-local", "datetime_local")
+                      | "cmonth" => cinput ("month", "month")
+                      | "cweek" => cinput ("week", "week")
+                      | "ctime" => cinput ("time", "time")
+
                       | "ccheckbox" => cinput ("checkbox", "chk")
                       | "cselect" =>
 			(case List.find (fn ("Source", _, _) => true | _ => false) attrs of
--- a/src/urweb.grm	Sun Nov 16 15:03:29 2014 -0500
+++ b/src/urweb.grm	Sun Nov 16 15:20:13 2014 -0500
@@ -223,6 +223,7 @@
         "table" => "tabl"
       | "url" => "url_"
       | "datetime-local" => "datetime_local"
+      | "cdatetime-local" => "cdatetime_local"
       | _ => bt
 
 datatype prop_kind = Delete | Update
--- a/tests/html5_cforms.ur	Sun Nov 16 15:03:29 2014 -0500
+++ b/tests/html5_cforms.ur	Sun Nov 16 15:20:13 2014 -0500
@@ -9,6 +9,15 @@
     d <- source "";
     e <- source "";
     f <- source "";
+    g <- source 1.0;
+    h <- source 1.0;
+    i <- source "#CCCCCC";
+    j <- source "2014/11/16";
+    k <- source "2014/11/16 12:30:45";
+    l <- source "2014/11/16 12:30:45";
+    m <- source "2014/11";
+    n <- source "2014-W7";
+    o <- source "12:30:45";
 
     return <xml><body>
       <ctextbox source={a}/>
@@ -17,6 +26,15 @@
       <curl source={d}/>
       <ctel source={e}/>
       <csearch source={f}/>
+      <cnumber source={g} min={-10.0} max={10.0} step={0.5}/>
+      <crange source={h} min={-10.0} max={10.0}/>
+      <ccolor source={i}/>
+      <cdate source={j}/>
+      <cdatetime source={k}/>
+      <cdatetime-local source={l}/>
+      <cmonth source={m}/>
+      <cweek source={n}/>
+      <ctime source={o}/>
 
       <hr/>
         
@@ -25,5 +43,14 @@
       {dn c};
       {dn d};
       {dn e};
-      {dn f}
+      {dn f};
+      {dn g};
+      {dn h};
+      {dn i};
+      {dn j};
+      {dn k};
+      {dn l};
+      {dn m};
+      {dn n};
+      {dn o}
     </body></xml>