@@ -12,7 +12,8 @@ Elm.Native.Graphics.Input = function(elm) {
12 var Signal = Elm.Signal(elm);
12 var Signal = Elm.Signal(elm);
13 var newElement = Elm.Graphics.Element(elm).newElement;
13 var newElement = Elm.Graphics.Element(elm).newElement;
14 var JS = Elm.Native.JavaScript(elm);
14 var JS = Elm.Native.JavaScript(elm);
15− var Tuple2 = Elm.Native.Utils(elm).Tuple2;
15+ var Utils = Elm.Native.Utils(elm);
16+ var Tuple2 = Utils.Tuple2;
17 function dropDown(values) {
18 function dropDown(values) {
18 var entries = JS.fromList(values);
19 var entries = JS.fromList(values);
@@ -145,6 +146,19 @@ Elm.Native.Graphics.Input = function(elm) {
149+ function hoverables(defaultValue) {
150+ var events = Signal.constant(defaultValue);
151+ function hoverable(handler, elem) {
152+ function onHover(bool) {
153+ elm.notify(events.id, handler(bool));
155+ var props = Utils.replace([['hover',onHover]], elem.props);
156+ return { props:props, element:elem.element };
158+ return { _:{}, hoverable:F2(hoverable), events:events };
148 function checkboxes(defaultValue) {
162 function checkboxes(defaultValue) {
149 var events = Signal.constant(defaultValue);
163 var events = Signal.constant(defaultValue);
@@ -271,6 +285,7 @@ Elm.Native.Graphics.Input = function(elm) {
271 return elm.Native.Graphics.Input = {
285 return elm.Native.Graphics.Input = {
272 buttons:buttons,
286 buttons:buttons,
273 customButtons:customButtons,
287 customButtons:customButtons,
288+ hoverables:hoverables,
274 checkboxes:checkboxes,
289 checkboxes:checkboxes,
275 fields:mkTextPool('text'),
290 fields:mkTextPool('text'),
276 emails:mkTextPool('email'),
291 emails:mkTextPool('email'),