mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-21 18:08:25 +00:00
Move utility functions into a Util file
This commit is contained in:
@ -18,6 +18,7 @@ import Html exposing (..)
|
|||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
import Html.Events exposing (..)
|
import Html.Events exposing (..)
|
||||||
import Json.Decode as D
|
import Json.Decode as D
|
||||||
|
import Util.Html exposing (onDragEnter, onDragLeave, onDragOver, onDropFiles)
|
||||||
|
|
||||||
|
|
||||||
type alias State =
|
type alias State =
|
||||||
@ -111,10 +112,10 @@ view : Model -> Html Msg
|
|||||||
view model =
|
view model =
|
||||||
div
|
div
|
||||||
[ classList (model.settings.classList model.state)
|
[ classList (model.settings.classList model.state)
|
||||||
, hijackOn "dragenter" (D.succeed DragEnter)
|
, onDragEnter DragEnter
|
||||||
, hijackOn "dragover" (D.succeed DragEnter)
|
, onDragOver DragEnter
|
||||||
, hijackOn "dragleave" (D.succeed DragLeave)
|
, onDragLeave DragLeave
|
||||||
, hijackOn "drop" dropDecoder
|
, onDropFiles GotFiles
|
||||||
]
|
]
|
||||||
[ div [ class "ui icon header" ]
|
[ div [ class "ui icon header" ]
|
||||||
[ i [ class "mouse pointer icon" ] []
|
[ i [ class "mouse pointer icon" ] []
|
||||||
@ -156,18 +157,3 @@ filterMime settings files =
|
|||||||
|
|
||||||
else
|
else
|
||||||
List.filter pred files
|
List.filter pred files
|
||||||
|
|
||||||
|
|
||||||
dropDecoder : D.Decoder Msg
|
|
||||||
dropDecoder =
|
|
||||||
D.at [ "dataTransfer", "files" ] (D.oneOrMore GotFiles File.decoder)
|
|
||||||
|
|
||||||
|
|
||||||
hijackOn : String -> D.Decoder msg -> Attribute msg
|
|
||||||
hijackOn event decoder =
|
|
||||||
preventDefaultOn event (D.map hijack decoder)
|
|
||||||
|
|
||||||
|
|
||||||
hijack : msg -> ( msg, Bool )
|
|
||||||
hijack msg =
|
|
||||||
( msg, True )
|
|
||||||
|
@ -4,13 +4,18 @@ module Util.Html exposing
|
|||||||
, classActive
|
, classActive
|
||||||
, intToKeyCode
|
, intToKeyCode
|
||||||
, onClickk
|
, onClickk
|
||||||
|
, onDragEnter
|
||||||
|
, onDragLeave
|
||||||
|
, onDragOver
|
||||||
|
, onDropFiles
|
||||||
, onKeyUp
|
, onKeyUp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
import File exposing (File)
|
||||||
import Html exposing (Attribute, Html, i)
|
import Html exposing (Attribute, Html, i)
|
||||||
import Html.Attributes exposing (class)
|
import Html.Attributes exposing (class)
|
||||||
import Html.Events exposing (keyCode, on)
|
import Html.Events exposing (keyCode, on, preventDefaultOn)
|
||||||
import Json.Decode as Decode
|
import Json.Decode as D
|
||||||
|
|
||||||
|
|
||||||
checkboxChecked : Html msg
|
checkboxChecked : Html msg
|
||||||
@ -68,12 +73,12 @@ intToKeyCode code =
|
|||||||
|
|
||||||
onKeyUp : (Int -> msg) -> Attribute msg
|
onKeyUp : (Int -> msg) -> Attribute msg
|
||||||
onKeyUp tagger =
|
onKeyUp tagger =
|
||||||
on "keyup" (Decode.map tagger keyCode)
|
on "keyup" (D.map tagger keyCode)
|
||||||
|
|
||||||
|
|
||||||
onClickk : msg -> Attribute msg
|
onClickk : msg -> Attribute msg
|
||||||
onClickk msg =
|
onClickk msg =
|
||||||
Html.Events.preventDefaultOn "click" (Decode.map alwaysPreventDefault (Decode.succeed msg))
|
Html.Events.preventDefaultOn "click" (D.map alwaysPreventDefault (D.succeed msg))
|
||||||
|
|
||||||
|
|
||||||
alwaysPreventDefault : msg -> ( msg, Bool )
|
alwaysPreventDefault : msg -> ( msg, Bool )
|
||||||
@ -92,3 +97,42 @@ classActive active classes =
|
|||||||
""
|
""
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
onDragEnter : msg -> Attribute msg
|
||||||
|
onDragEnter m =
|
||||||
|
hijackOn "dragenter" (D.succeed m)
|
||||||
|
|
||||||
|
|
||||||
|
onDragOver : msg -> Attribute msg
|
||||||
|
onDragOver m =
|
||||||
|
hijackOn "dragover" (D.succeed m)
|
||||||
|
|
||||||
|
|
||||||
|
onDragLeave : msg -> Attribute msg
|
||||||
|
onDragLeave m =
|
||||||
|
hijackOn "dragleave" (D.succeed m)
|
||||||
|
|
||||||
|
|
||||||
|
onDrop : msg -> Attribute msg
|
||||||
|
onDrop m =
|
||||||
|
hijackOn "drop" (D.succeed m)
|
||||||
|
|
||||||
|
|
||||||
|
onDropFiles : (File -> List File -> msg) -> Attribute msg
|
||||||
|
onDropFiles tagger =
|
||||||
|
let
|
||||||
|
dropFilesDecoder =
|
||||||
|
D.at [ "dataTransfer", "files" ] (D.oneOrMore tagger File.decoder)
|
||||||
|
in
|
||||||
|
hijackOn "drop" dropFilesDecoder
|
||||||
|
|
||||||
|
|
||||||
|
hijackOn : String -> D.Decoder msg -> Attribute msg
|
||||||
|
hijackOn event decoder =
|
||||||
|
preventDefaultOn event (D.map hijack decoder)
|
||||||
|
|
||||||
|
|
||||||
|
hijack : msg -> ( msg, Bool )
|
||||||
|
hijack msg =
|
||||||
|
( msg, True )
|
||||||
|
Reference in New Issue
Block a user