packages feed

blaze-bootstrap (empty) → 0.1.0.0

raw patch · 3 files changed

+128/−0 lines, 3 filesdep +basedep +blaze-htmldep +textsetup-changed

Dependencies added: base, blaze-html, text

Files

+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ blaze-bootstrap.cabal view
@@ -0,0 +1,21 @@+name:                blaze-bootstrap+version:             0.1.0.0+synopsis:            Blaze helper functions for bootstrap pages+description:         Simplify building blaze and bootstrap powered pages+homepage:            http://github.com/agrafix/blaze-bootstrap+license:             MIT+author:              Alexander Thiemann <mail@agrafix.net>+maintainer:          mail@agrafix.net+copyright:           (c) 2014 Alexander Thiemann+category:            Web+build-type:          Simple+cabal-version:       >=1.10++library+  exposed-modules:     Text.Blaze.Bootstrap+  build-depends:       base ==4.*,+                       blaze-html >=0.7 && <0.8,+                       text+  hs-source-dirs:      src+  default-language:    Haskell2010+  ghc-options: -Wall
+ src/Text/Blaze/Bootstrap.hs view
@@ -0,0 +1,105 @@+{-# LANGUAGE OverloadedStrings #-}+module Text.Blaze.Bootstrap where++import Control.Monad+import Data.Monoid+import Text.Blaze.Html5+import Text.Blaze.Html5.Attributes+import qualified Data.Text as T+import qualified Text.Blaze.Html5 as H+import qualified Text.Blaze.Html5.Attributes as A++stylesheet :: AttributeValue -> Html+stylesheet path =+    link ! href path ! rel "stylesheet" ! type_ "text/css"++javascript :: AttributeValue -> Html+javascript path =+    script ! src path $ emptyEl++emptyEl :: Html+emptyEl = mempty++container :: Html -> Html+container x =+    H.div ! class_ "container" $ x++row :: Html -> Html+row x =+    H.div ! class_ "row" $ x++dataToggle :: AttributeValue -> Attribute+dataToggle = dataAttribute "toggle"++dataTarget :: AttributeValue -> Attribute+dataTarget = dataAttribute "target"++dataDismiss :: AttributeValue -> Attribute+dataDismiss = dataAttribute "dismiss"++ariaHidden :: Bool -> Attribute+ariaHidden bool =+    customAttribute  "aria-hidden" (if bool then "true" else "false")++role :: AttributeValue -> Attribute+role = customAttribute "role"++data BootAlertType+   = BootAlertDanger+   | BootAlertWarn+   | BootAlertInfo+   | BootAlertSuccess++alertBox :: BootAlertType -> Html -> Html+alertBox alertType alertVal =+    H.div ! class_ (toValue $ T.concat ["alert alert-dismissable ", t]) $+    do button ! type_ "button" ! class_ "close" ! dataDismiss "alert" ! ariaHidden True $ (unsafeByteString "&times;")+       alertVal+    where+      t =+          case alertType of+            BootAlertDanger -> "alert-danger"+            BootAlertWarn -> "alert-warning"+            BootAlertInfo -> "alert-info"+            BootAlertSuccess -> "alert-success"++mainNavigation :: AttributeValue+               -> Html -> [(AttributeValue, Html)] -> Html+mainNavigation indexPath pageTitle navPoints =+    nav ! class_ "navbar navbar-default navbar-fixed-top" $+     container $+      do H.div ! class_ "navbar-header page-scroll" $+          do button ! type_ "button" ! class_ "navbar-toggle" ! dataToggle "collapse" ! dataTarget "#main-nav" $+              do H.span ! class_ "sr-only" $ "Toggle navigation"+                 H.span ! class_ "icon-bar" $ emptyEl+                 H.span ! class_ "icon-bar" $ emptyEl+                 H.span ! class_ "icon-bar" $ emptyEl+             a ! class_ "navbar-brand" ! href indexPath $ pageTitle+         H.div ! class_ "collapse navbar-collapse" ! A.id "main-nav" $+           ul ! class_ "nav navbar-nav navbar-right" $+              forM_ navPoints $ \(url, val) ->+                li (a ! href url $ val)++formGroup :: Html -> Html+formGroup formBody =+    H.div ! class_ "form-group" $ formBody++formSelect :: (Eq k, ToValue k, ToMarkup v)+           => T.Text -> AttributeValue -> [(k, v)] -> Maybe k -> Html+formSelect selLabel selName keyValues selectedV =+    formGroup $+    do H.label ! for selName $ (toHtml selLabel)+       H.select ! name selName ! class_ "form-control" $+        forM_ keyValues $ \(k, v) ->+          H.option ! value (toValue k) !? (Just k == selectedV, selected "selected") $ toMarkup v++formSubmit :: Html -> Html+formSubmit buttonVal =+    H.button ! type_ "submit" ! class_ "btn btn-lg btn-success btn-block" $ buttonVal++tableResponsive :: Html -> Html -> Html+tableResponsive tblHead tblBody =+    H.div ! class_ "table-responsive" $+    table ! class_ "table table-striped table-bordered table-hover" $+          do thead tblHead+             tbody tblBody