Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.74 KB | None | 0 0
  1. module Util exposing (..)
  2.  
  3. import Html.Events exposing (on, keyCode)
  4. import Html exposing (Attribute)
  5. import Json.Decode as Json
  6.  
  7.  
  8. {-| Conditionally emit msg defined by `tagger` if the
  9. key pressed was the enter key
  10. -}
  11. onEnter : msg -> Attribute msg
  12. onEnter tagger =
  13. onKeyDown tagger <| \key -> key == 13
  14.  
  15.  
  16. {-| Conditionally emit msg defined by `tagger` based
  17. on return value of `pred`.
  18. -}
  19. onKeyDown : msg -> (Int -> Bool) -> Attribute msg
  20. onKeyDown tagger pred =
  21. on "keydown"
  22. (keyCode
  23. |> Json.map pred
  24. |> Json.andThen
  25. (\result ->
  26. if result then
  27. Json.succeed tagger
  28. else
  29. Json.fail ""
  30. )
  31. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement