aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/View/Form.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/View/Form.elm')
-rw-r--r--src/client/elm/View/Form.elm53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/client/elm/View/Form.elm b/src/client/elm/View/Form.elm
new file mode 100644
index 0000000..fd21a2c
--- /dev/null
+++ b/src/client/elm/View/Form.elm
@@ -0,0 +1,53 @@
+module View.Form exposing
+ ( textInput
+ )
+
+import Html exposing (..)
+import Html.Attributes exposing (..)
+
+import Form exposing (Form)
+import Form.Input as Input
+import Form.Error as FormError exposing (Error(..))
+
+import Msg exposing (Msg)
+
+import LoggedData exposing (LoggedData)
+
+import Model.Translations as Translations exposing (Translations)
+
+import Utils.Maybe exposing (isJust)
+
+textInput : Translations -> Form String a -> (Html Form.Msg -> Html msg) -> String -> Html msg
+textInput translations form htmlMap fieldName =
+ let field = Form.getFieldAsString fieldName form
+ in div
+ [ classList
+ [ ("textInput", True)
+ , ("error", isJust field.liveError)
+ ]
+ ]
+ [ htmlMap <|
+ Input.textInput
+ field
+ [ id fieldName
+ , classList [ ("filled", isJust field.value) ]
+ ]
+ , label
+ [ for fieldName ]
+ [ text (Translations.getMessage fieldName translations) ]
+ , case field.liveError of
+ Just error -> errorElement translations error
+ Nothing -> text ""
+ ]
+
+errorElement : Translations -> FormError.Error String -> Html msg
+errorElement translations error =
+ case error of
+ CustomError key ->
+ div [ class "errorMessage" ] [ text (Translations.getMessage key translations) ]
+ SmallerIntThan n ->
+ div [ class "errorMessage" ] [ text (Translations.getParamMessage [toString n] "SmallerIntThan" translations) ]
+ GreaterIntThan n ->
+ div [ class "errorMessage" ] [ text (Translations.getParamMessage [toString n] "GreaterIntThan" translations) ]
+ error ->
+ div [ class "errorMessage" ] [ text (Translations.getMessage (toString error) translations) ]