{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE OverloadedStrings #-}
module Web.Rep.Html.Input
( Input (..),
InputType (..),
markupInput,
ToByteString (..),
)
where
import Data.Bool
import Data.ByteString (ByteString)
import Data.ByteString.Char8 qualified as C
import Data.Maybe
import Data.Text (Text)
import Data.Text.Encoding
import GHC.Generics
import MarkupParse
class ToByteString a where
toByteString :: a -> ByteString
default toByteString :: (Show a) => a -> ByteString
toByteString = String -> ByteString
strToUtf8 (String -> ByteString) -> (a -> String) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
instance ToByteString ByteString where
toByteString :: ByteString -> ByteString
toByteString = ByteString -> ByteString
forall a. a -> a
id
instance ToByteString Text where
toByteString :: Text -> ByteString
toByteString = Text -> ByteString
encodeUtf8
instance ToByteString Int
instance ToByteString Integer
instance ToByteString Double
instance ToByteString Float
instance ToByteString Bool
data Input a = Input
{
forall a. Input a -> a
inputVal :: a,
forall a. Input a -> Maybe ByteString
inputLabel :: Maybe ByteString,
forall a. Input a -> ByteString
inputId :: ByteString,
forall a. Input a -> InputType
inputType :: InputType
}
deriving (Input a -> Input a -> Bool
(Input a -> Input a -> Bool)
-> (Input a -> Input a -> Bool) -> Eq (Input a)
forall a. Eq a => Input a -> Input a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Input a -> Input a -> Bool
== :: Input a -> Input a -> Bool
$c/= :: forall a. Eq a => Input a -> Input a -> Bool
/= :: Input a -> Input a -> Bool
Eq, Int -> Input a -> ShowS
[Input a] -> ShowS
Input a -> String
(Int -> Input a -> ShowS)
-> (Input a -> String) -> ([Input a] -> ShowS) -> Show (Input a)
forall a. Show a => Int -> Input a -> ShowS
forall a. Show a => [Input a] -> ShowS
forall a. Show a => Input a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Input a -> ShowS
showsPrec :: Int -> Input a -> ShowS
$cshow :: forall a. Show a => Input a -> String
show :: Input a -> String
$cshowList :: forall a. Show a => [Input a] -> ShowS
showList :: [Input a] -> ShowS
Show, (forall x. Input a -> Rep (Input a) x)
-> (forall x. Rep (Input a) x -> Input a) -> Generic (Input a)
forall x. Rep (Input a) x -> Input a
forall x. Input a -> Rep (Input a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Input a) x -> Input a
forall a x. Input a -> Rep (Input a) x
$cfrom :: forall a x. Input a -> Rep (Input a) x
from :: forall x. Input a -> Rep (Input a) x
$cto :: forall a x. Rep (Input a) x -> Input a
to :: forall x. Rep (Input a) x -> Input a
Generic)
data InputType
= Slider [Attr]
| SliderV [Attr]
| TextBox
| TextBox'
| TextArea Int
| ColorPicker
| ChooseFile
| Dropdown [ByteString]
| DropdownMultiple [ByteString] Char
| DropdownSum [ByteString]
| Datalist [ByteString] ByteString
| Checkbox Bool
| Toggle Bool (Maybe ByteString)
| Button
deriving (InputType -> InputType -> Bool
(InputType -> InputType -> Bool)
-> (InputType -> InputType -> Bool) -> Eq InputType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InputType -> InputType -> Bool
== :: InputType -> InputType -> Bool
$c/= :: InputType -> InputType -> Bool
/= :: InputType -> InputType -> Bool
Eq, Int -> InputType -> ShowS
[InputType] -> ShowS
InputType -> String
(Int -> InputType -> ShowS)
-> (InputType -> String)
-> ([InputType] -> ShowS)
-> Show InputType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InputType -> ShowS
showsPrec :: Int -> InputType -> ShowS
$cshow :: InputType -> String
show :: InputType -> String
$cshowList :: [InputType] -> ShowS
showList :: [InputType] -> ShowS
Show, (forall x. InputType -> Rep InputType x)
-> (forall x. Rep InputType x -> InputType) -> Generic InputType
forall x. Rep InputType x -> InputType
forall x. InputType -> Rep InputType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. InputType -> Rep InputType x
from :: forall x. InputType -> Rep InputType x
$cto :: forall x. Rep InputType x -> InputType
to :: forall x. Rep InputType x -> InputType
Generic)
markupInput :: (a -> ByteString) -> Input a -> Markup
markupInput :: forall a. (a -> ByteString) -> Input a -> Markup
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i (Slider [Attr]
satts)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
(Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l)
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
( [ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"range",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
" form-control-range form-control-sm custom-range jsbClassEventChange",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"value" (a -> ByteString
pr a
v)
]
[Attr] -> [Attr] -> [Attr]
forall a. Semigroup a => a -> a -> a
<> [Attr]
satts
)
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i (SliderV [Attr]
satts)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
( [ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"range",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
" form-control-range form-control-sm custom-range jsbClassEventChange",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"value" (a -> ByteString
pr a
v),
ByteString -> ByteString -> Attr
Attr ByteString
"oninput" (ByteString
"$('#sliderv" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
i ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"').html($(this).val())")
]
[Attr] -> [Attr] -> [Attr]
forall a. Semigroup a => a -> a -> a
<> [Attr]
satts
)
)
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"span" [ByteString -> ByteString -> Attr
Attr ByteString
"id" (ByteString
"sliderv" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
i)] (a -> ByteString
pr a
v)
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i InputType
TextBox) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
[ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"text",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventInput",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"value" (a -> ByteString
pr a
v)
]
)
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i InputType
TextBox') =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
[ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"text",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventFocusout",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"value" (a -> ByteString
pr a
v)
]
)
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i (TextArea Int
rows)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> ByteString -> Markup
elementc
ByteString
"textarea"
[ ByteString -> ByteString -> Attr
Attr ByteString
"rows" (Int -> ByteString
forall a. ToByteString a => a -> ByteString
toByteString Int
rows),
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventInput",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i
]
(a -> ByteString
pr a
v)
)
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i InputType
ColorPicker) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
[ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"color",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventInput",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"value" (a -> ByteString
pr a
v)
]
)
markupInput a -> ByteString
_ (Input a
_ Maybe ByteString
l ByteString
i InputType
ChooseFile) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
[ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"file",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control-file form-control-sm jsbClassEventChooseFile",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i
]
)
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i (Dropdown [ByteString]
opts)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"select"
[ ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventInput",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i
]
([Markup] -> Markup
forall a. Monoid a => [a] -> a
mconcat [Markup]
opts')
)
where
opts' :: [Markup]
opts' =
( \ByteString
o ->
ByteString -> [Attr] -> ByteString -> Markup
elementc
ByteString
"option"
( [Attr] -> [Attr] -> Bool -> [Attr]
forall a. a -> a -> Bool -> a
bool
[]
[ByteString -> ByteString -> Attr
Attr ByteString
"selected" ByteString
"selected"]
(ByteString
o ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== a -> ByteString
pr a
v)
)
ByteString
o
)
(ByteString -> Markup) -> [ByteString] -> [Markup]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ByteString]
opts
markupInput a -> ByteString
pr (Input a
vs Maybe ByteString
l ByteString
i (DropdownMultiple [ByteString]
opts Char
sep)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"select"
[ ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventChangeMultiple",
ByteString -> ByteString -> Attr
Attr ByteString
"multiple" ByteString
"multiple",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i
]
([Markup] -> Markup
forall a. Monoid a => [a] -> a
mconcat [Markup]
opts')
)
where
opts' :: [Markup]
opts' =
( \ByteString
o ->
ByteString -> [Attr] -> ByteString -> Markup
elementc
ByteString
"option"
( [Attr] -> [Attr] -> Bool -> [Attr]
forall a. a -> a -> Bool -> a
bool
[]
[ByteString -> ByteString -> Attr
Attr ByteString
"selected" ByteString
"selected"]
((ByteString -> Bool) -> [ByteString] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any (\ByteString
v -> ByteString
o ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== String -> ByteString
strToUtf8 (ByteString -> String
forall a. Show a => a -> String
show ByteString
v)) (Char -> ByteString -> [ByteString]
C.split Char
sep (a -> ByteString
pr a
vs)))
)
ByteString
o
)
(ByteString -> Markup) -> [ByteString] -> [Markup]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ByteString]
opts
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i (DropdownSum [ByteString]
opts)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm sumtype-group"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"select"
[ ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventInput jsbClassEventShowSum",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i
]
([Markup] -> Markup
forall a. Monoid a => [a] -> a
mconcat [Markup]
opts')
)
where
opts' :: [Markup]
opts' =
( \ByteString
o ->
ByteString -> [Attr] -> ByteString -> Markup
elementc
ByteString
"option"
([Attr] -> [Attr] -> Bool -> [Attr]
forall a. a -> a -> Bool -> a
bool [] [ByteString -> ByteString -> Attr
Attr ByteString
"selected" ByteString
"selected"] (ByteString
o ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== a -> ByteString
pr a
v))
ByteString
o
)
(ByteString -> Markup) -> [ByteString] -> [Markup]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ByteString]
opts
markupInput a -> ByteString
pr (Input a
v Maybe ByteString
l ByteString
i (Datalist [ByteString]
opts ByteString
listId)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
[ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"text",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-control form-control-sm jsbClassEventInput",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"list" ByteString
listId
]
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"datalist"
[ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
listId]
( [Markup] -> Markup
forall a. Monoid a => [a] -> a
mconcat
( ( \ByteString
o ->
ByteString -> [Attr] -> ByteString -> Markup
elementc
ByteString
"option"
( [Attr] -> [Attr] -> Bool -> [Attr]
forall a. a -> a -> Bool -> a
bool
[]
[ByteString -> ByteString -> Attr
Attr ByteString
"selected" ByteString
"selected"]
(ByteString
o ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== a -> ByteString
pr a
v)
)
ByteString
o
)
(ByteString -> Markup) -> [ByteString] -> [Markup]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ByteString]
opts
)
)
)
markupInput a -> ByteString
_ (Input a
_ Maybe ByteString
l ByteString
i (Checkbox Bool
checked)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-check form-check-sm"]
( ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"input"
( [ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"checkbox",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-check-input jsbClassEventCheckbox",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i
]
[Attr] -> [Attr] -> [Attr]
forall a. Semigroup a => a -> a -> a
<> [Attr] -> [Attr] -> Bool -> [Attr]
forall a. a -> a -> Bool -> a
bool [] [ByteString -> ByteString -> Attr
Attr ByteString
"checked" ByteString
""] Bool
checked
)
(Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-label-check mb-0"]) Maybe ByteString
l)
)
markupInput a -> ByteString
_ (Input a
_ Maybe ByteString
l ByteString
i (Toggle Bool
pushed Maybe ByteString
lab)) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( Markup -> (ByteString -> Markup) -> Maybe ByteString -> Markup
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Markup
forall a. Monoid a => a
mempty (ByteString -> [Attr] -> ByteString -> Markup
elementc ByteString
"label" [ByteString -> ByteString -> Attr
Attr ByteString
"for" ByteString
i, ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"mb-0"]) Maybe ByteString
l
Markup -> Markup -> Markup
forall a. Semigroup a => a -> a -> a
<> ByteString -> [Attr] -> Markup
element_
ByteString
"input"
( [ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"button",
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"btn btn-primary btn-sm jsbClassEventToggle",
ByteString -> ByteString -> Attr
Attr ByteString
"data-bs-toggle" ByteString
"button",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"aria-pressed" (ByteString -> ByteString -> Bool -> ByteString
forall a. a -> a -> Bool -> a
bool ByteString
"false" ByteString
"true" Bool
pushed)
]
[Attr] -> [Attr] -> [Attr]
forall a. Semigroup a => a -> a -> a
<> [Attr] -> (ByteString -> [Attr]) -> Maybe ByteString -> [Attr]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] (\ByteString
l' -> [ByteString -> ByteString -> Attr
Attr ByteString
"value" ByteString
l']) Maybe ByteString
lab
[Attr] -> [Attr] -> [Attr]
forall a. Semigroup a => a -> a -> a
<> [Attr] -> [Attr] -> Bool -> [Attr]
forall a. a -> a -> Bool -> a
bool [] [ByteString -> ByteString -> Attr
Attr ByteString
"checked" ByteString
""] Bool
pushed
)
)
markupInput a -> ByteString
_ (Input a
_ Maybe ByteString
l ByteString
i InputType
Button) =
ByteString -> [Attr] -> Markup -> Markup
element
ByteString
"div"
[ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"form-group-sm"]
( ByteString -> [Attr] -> Markup
element_
ByteString
"input"
[ ByteString -> ByteString -> Attr
Attr ByteString
"type" ByteString
"button",
ByteString -> ByteString -> Attr
Attr ByteString
"id" ByteString
i,
ByteString -> ByteString -> Attr
Attr ByteString
"class" ByteString
"btn btn-primary btn-sm jsbClassEventButton",
ByteString -> ByteString -> Attr
Attr ByteString
"value" (ByteString -> Maybe ByteString -> ByteString
forall a. a -> Maybe a -> a
fromMaybe ByteString
"button" Maybe ByteString
l)
]
)