bulmex-2.0.0: src/Reflex/Bulmex/Tag/Icon.hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
-- | Icons with material design
module Reflex.Bulmex.Tag.Icon
(-- * Icon
icon
, iconClass
, iconDyn
,-- * Flask
flask
) where
import qualified Data.Map.Strict as Map
import qualified Data.Text as Text
import Reflex
import Reflex.Bulmex.Attr
import Reflex.Bulmex.Tag.Odd
import qualified Reflex.Dom.Builder.Class as Dom
import qualified Reflex.Dom.Widget as Dom
import qualified Reflex.Tags as T
icon :: (PostBuild t m, Dom.DomBuilder t m) => Text.Text -> m ()
icon = iconClass ""
-- | second is name
iconClass ::
(PostBuild t m, Dom.DomBuilder t m) => Text.Text -> Text.Text -> m ()
iconClass wrapClass =
iconDyn (constDyn (classAttr wrapClass)) . constDyn . classAttr
iconDyn ::
(PostBuild t m, Dom.DomBuilder t m)
=> Dynamic t AttrMap
-> Dynamic t AttrMap
-> m ()
iconDyn wrapClass mdiClass = do
textSpace
T.spanDynAttr (attrUnion (classAttr "icon") <$> wrapClass) $
T.iDynAttr (Map.unionWith (<>) (classAttr "mdi mdi-") <$> mdiClass) $
Dom.blank
textSpace
flask :: (PostBuild t m, Dom.DomBuilder t m) => m ()
flask = icon "flask"