module Demo.Textfields where import Array exposing (Array) import Html exposing (Html) import Material.Textfield as Textfield import Material.Grid as Grid exposing (..) type alias Model = Array Textfield.Model model : Model model = let t0 = Textfield.model in [ t0 , { t0 | label = Just { text = "Labelled", float = False } } , { t0 | label = Just { text = "Floating label", float = True }} , { t0 | label = Just { text = "Disabled", float = False } , isDisabled = True } , { t0 | label = Just { text = "With error and value", float = False } , error = Just "The input is wrong!" , value = "Incorrect input" } ] |> Array.fromList type Action = Field Int Textfield.Action update : Action -> Model -> Model update (Field k action) fields = Array.get k fields |> Maybe.map (Textfield.update action) |> Maybe.map (\field' -> Array.set k field' fields) |> Maybe.withDefault fields view : Signal.Address Action -> Model -> Html view addr model = model |> Array.indexedMap (\k field -> Textfield.view (Signal.forwardTo addr (Field k)) field ) |> Array.toList |> List.map (\x -> cell [size All 3] [x]) |> grid []