docspell/modules/webapp/src/main/elm/Comp/ConfirmModal.elm

77 lines
2.0 KiB
Elm

module Comp.ConfirmModal exposing
( Settings
, defaultSettings
, view
)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
import Styles as S
type alias Settings msg =
{ enabled : Bool
, extraClass : String
, headerIcon : String
, headerClass : String
, confirmText : String
, cancelText : String
, message : String
, confirm : msg
, cancel : msg
}
defaultSettings : msg -> msg -> String -> Settings msg
defaultSettings confirm cancel confirmMsg =
{ enabled = True
, extraClass = ""
, headerIcon = "fa fa-exclamation-circle mr-3"
, headerClass = "text-2xl font-bold text-center w-full"
, confirmText = "Ok"
, cancelText = "Cancel"
, message = confirmMsg
, confirm = confirm
, cancel = cancel
}
view : Settings msg -> Html msg
view settings =
div
[ class S.dimmer
, class settings.extraClass
, classList
[ ( "hidden", not settings.enabled )
]
]
[ div [ class settings.headerClass ]
[ i
[ class settings.headerIcon
, class "text-gray-200 font-semibold"
, classList [ ( "hidden", settings.headerClass == "" ) ]
]
[]
, span [ class "text-gray-200 font-semibold" ]
[ text settings.message
]
]
, div [ class "flex flex-row space-x-2 text-xs mt-2" ]
[ a
[ class (S.primaryButton ++ "block font-semibold")
, href "#"
, onClick settings.confirm
]
[ text settings.confirmText
]
, a
[ class (S.secondaryButton ++ "block font-semibold")
, href "#"
, onClick settings.cancel
]
[ text settings.cancelText
]
]
]