0 | module Text.HTML.File
3 | import Text.HTML.Class
4 | import Text.HTML.DomID
5 | import Text.HTML.Validation
6 | import public Data.FilePath
7 | import public Web.Internal.FileTypes
12 | data FileEv : Type where
13 | NameChanged : String -> FileEv
14 | FileChanged : File -> String -> FileEv
18 | record FileEnv (i : Type) where
22 | readBody : String -> Either String Body
28 | fromInfo : InputInfo -> Maybe FileEv
29 | fromInfo (MkInputInfo v [f] checked) = Just (FileChanged f v)
30 | fromInfo _ = Nothing
32 | parameters {0 i : Type}
33 | {auto cst : Cast i DomID}
34 | {auto ve : ValEnv i}
35 | {auto fe : FileEnv i}
38 | file : (fe : FileEnv i) => i -> Maybe Body -> Node FileEv
39 | file uid (Just b) = NameChanged <$> vinp fe.inputCls Text uid "\{b}"
42 | [ NameChanged <$> vinp fe.inputCls Text uid ""
43 | , label [forID (fe.fileID uid), cls Btn fe.labelCls] [Text fe.browse]
45 | [ ref $
fe.fileID uid
46 | , cls Widget fe.fileCls
48 | , Event (Input fromInfo)