module Html.Ext exposing (..) import Html exposing (Attribute, Html) import Html.Events exposing (keyCode, on, preventDefaultOn, stopPropagationOn) import Json.Decode as Json lineBreak : Html msg lineBreak = Html.br [] [] onClickStopPropagation : msg -> Attribute msg onClickStopPropagation msg = stopPropagationOn "click" (Json.succeed ( msg, True )) onDoubleTap : msg -> Attribute msg onDoubleTap msg = on "dbltap" (Json.succeed msg) onEnterKey : msg -> Attribute msg onEnterKey msg = on "keydown" (Json.andThen (ifEnterKey msg) keyCode) ifEnterKey : msg -> Int -> Json.Decoder msg ifEnterKey msg key = case key of 13 -> Json.succeed msg _ -> Json.fail "Another key, that isn't enter, was pressed" onTap : msg -> Attribute msg onTap msg = on "tap" (Json.succeed msg) onTapPreventDefault : msg -> Attribute msg onTapPreventDefault msg = preventDefaultOn "tap" (Json.succeed ( msg, True )) onTapStopPropagation : msg -> Attribute msg onTapStopPropagation msg = stopPropagationOn "tap" (Json.succeed ( msg, True ))