getto-systems / elm-field / Getto.Field.Form

edit field utilities

type Msg
  = Set (Form.Prop Model attr String) String

init =
  { name = "field" |> Field.init signature attribute ""
  }

update msg model =
  case msg of
    Set prop value -> model |> Form.set prop value

name_ = Form.prop .name (\v m -> { m | name = v })

view model =
  let
    form =
      { name = model.name |> Form.init name_
      }
  in
    H.input
      [ form.name.field |> Field.value |> A.value
      , form.name.prop |> Set |> E.onInput
      ] []

Definition


type alias Model form attr a =
{ field : Getto.Field.Model attr a
, prop : Prop form attr a 
}

field and prop


type alias Between form attr a =
{ gteq : Model form attr a
, lteq : Model form attr a 
}

gteq Model and lteq Model


type Prop form attr a

getter and setter

Construction

init : Prop form attr a -> Getto.Field.Model attr a -> Model form attr a

construct Model

form = field |> Form.init name_

prop : Getter form attr a -> Setter form attr a -> Prop form attr a

construct Prop

name_ = Form.prop .name (\v m -> { m | name = v })

Getter

at : Prop form attr a -> form -> Getto.Field.Model attr a

get field from model

form |> Form.at name_

Update

set : Prop form attr a -> a -> form -> form

set value

form |> Form.set name_ "value"

setIf : Prop form attr a -> Maybe a -> form -> form

set value if value is present

form |> Form.setIf name_ (Just "value")
-- set "value"

form |> Form.setIf name_ Nothing
-- do nothing

toggle : Prop form attr (Set comparable) -> comparable -> form -> form

toggle set

form |> Form.toggle roles_ "admin"

Attribute

setAttribute : Prop form attr value -> attr -> form -> form

set attribute

form |> Form.setAttribute name_ attr