arowM/elm-mixin/1.0.0

NOTE: the latest version is 5.3.0

elm-mixin

Build Status

A brief Elm library for Mixins. The mixins are more flexible and reusable than Html.Attribute msg.

Example

import Html
import Html.Events as Events
import Mixin

view : Model -> Html Msg
view model =
    Mixin.lift Html.form
        [ Mixin.class "form"
        ]
        [ Mixin.div
            [ Mixin.class "form_row"
            ]
            [ Html.text "Name"
            , Mixin.lift Html.input
                [ formInput (isInvalidName model) ChangeName
                , Mixin.class "formInput-name"
                ]
                []
            ]
        , Mixin.div
            [ Mixin.class "form_row"
            ]
            [ Html.text "Age"
            , Mixin.lift Html.input
                [ formInput (isInvalidAge model) ChangeAge
                , Mixin.class "formInput-age"
                ]
                []
            ]
        ]


formInput : Bool -> (String -> Msg) -> Mixin Msg
formInput isInvalid onChange =
    Mixin.batch
        [ Mixin.fromAttribute <| Events.onChange onChange
        , Mixin.class "formInput"
        , Mixin.attribute "aria-invalid" <|
            if isInvalid then
                "true"
            else
                "false"
        ]