module Dialog.Model exposing ( Model , AddPayment , init , addPaymentInitial ) import Form exposing (Form) import Form.Field as Field exposing (Field) import Form.Validate as Validate exposing (Validation) import Model.Payment as Payment type alias Model = { addPayment : Form String AddPayment } type alias AddPayment = { name : String , cost : Int , frequency : Payment.Frequency } init : Model init = { addPayment = Form.initial [] addPaymentValidation } addPaymentInitial : Payment.Frequency -> List (String, Field) addPaymentInitial frequency = [ ("frequency", Field.Radio (toString frequency)) ] addPaymentValidation : Validation String AddPayment addPaymentValidation = Validate.form3 AddPayment (Validate.get "name" (Validate.string `Validate.andThen` (Validate.nonEmpty))) (Validate.get "cost" (Validate.int `Validate.andThen` (Validate.minInt 1))) (Validate.get "frequency" Payment.validateFrequency)