module Util exposing (appendErrors, onClickStopPropagation, pair, viewIf) import Html exposing (Attribute, Html) import Html.Events exposing (defaultOptions, onWithOptions) import Json.Decode as Decode {-| Useful when building up a Cmd via a pipeline, and then pairing it with a model at the end. session.user |> User.Request.foo |> Task.attempt Foo |> pair { model | something = blah } -} pair : a -> b -> ( a, b ) pair first second = ( first, second ) viewIf : Bool -> Html msg -> Html msg viewIf condition content = if condition then content else Html.text "" onClickStopPropagation : msg -> Attribute msg onClickStopPropagation msg = onWithOptions "click" { defaultOptions | stopPropagation = True } (Decode.succeed msg) appendErrors : { model | errors : List error } -> List error -> { model | errors : List error } appendErrors model errors = { model | errors = model.errors ++ errors }