module Util.Html exposing (..) import Html exposing (Attribute) import Html.Attributes exposing (class) import Html.Events exposing (on, keyCode) import Json.Decode as Decode type KeyCode = Up | Down | Left | Right | Enter intToKeyCode: Int -> Maybe KeyCode intToKeyCode code = case code of 38 -> Just Up 40 -> Just Down 39 -> Just Right 37 -> Just Left 13 -> Just Enter _ -> Nothing onKeyUp : (Int -> msg) -> Attribute msg onKeyUp tagger = on "keyup" (Decode.map tagger keyCode) onClickk : msg -> Attribute msg onClickk msg = Html.Events.preventDefaultOn "click" (Decode.map alwaysPreventDefault (Decode.succeed msg)) alwaysPreventDefault : msg -> ( msg, Bool ) alwaysPreventDefault msg = ( msg, True ) classActive: Bool -> String -> Attribute msg classActive active classes = class (classes ++ (if active then " active" else ""))