Files
acms/frontend/app/Form/Input.hs

36 lines
977 B
Haskell
Raw Normal View History

2024-06-04 09:28:10 +02:00
module Form.Input
2024-06-06 22:42:44 +02:00
( input,
2024-06-04 09:28:10 +02:00
)
where
import Data.Text qualified as T
import Form.Internal
import Miso
2024-06-04 09:59:10 +02:00
import Miso.String (fromMisoString, toMisoString)
2024-06-04 09:28:10 +02:00
2024-06-06 22:42:44 +02:00
input :: String -> Form T.Text T.Text
input label =
2024-06-07 15:53:01 +02:00
let parse :: T.Text -> Either String T.Text
parse i =
let i' = T.strip i
in if T.null i' then Left "required" else Right i'
in Form
{ view = \i ->
[ div_ [] $
[ label_ [] $
[ text (toMisoString label),
div_ [] $
[ input_
[ type_ "text",
value_ (toMisoString i),
onInput fromMisoString
],
div_ [] $
[either (text . toMisoString) (\_ -> text "") (parse i)]
]
2024-06-04 09:28:10 +02:00
]
]
2024-06-07 15:53:01 +02:00
],
fill = parse
}