CssBuilder
This commit is contained in:
parent
57b8748a3d
commit
01b855969b
@ -4,6 +4,8 @@
|
|||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
-- | Normal users should never need access to these.
|
-- | Normal users should never need access to these.
|
||||||
|
--
|
||||||
|
-- Note that no guarantees of API stability are provided on this module. Use at your own risk.
|
||||||
module Yesod.Internal
|
module Yesod.Internal
|
||||||
( -- * Error responses
|
( -- * Error responses
|
||||||
ErrorResponse (..)
|
ErrorResponse (..)
|
||||||
|
|||||||
@ -43,6 +43,7 @@ module Yesod.Widget
|
|||||||
, addStylesheetRemote
|
, addStylesheetRemote
|
||||||
, addStylesheetRemoteAttrs
|
, addStylesheetRemoteAttrs
|
||||||
, addStylesheetEither
|
, addStylesheetEither
|
||||||
|
, CssBuilder (..)
|
||||||
-- ** Javascript
|
-- ** Javascript
|
||||||
, addJulius
|
, addJulius
|
||||||
, addJuliusBody
|
, addJuliusBody
|
||||||
@ -80,7 +81,7 @@ import Language.Haskell.TH.Syntax (Q, Exp (InfixE, VarE, LamE, AppE), Pat (VarP)
|
|||||||
import Control.Monad.Trans.Control (MonadBaseControl (..))
|
import Control.Monad.Trans.Control (MonadBaseControl (..))
|
||||||
import Control.Exception (throwIO)
|
import Control.Exception (throwIO)
|
||||||
import qualified Text.Hamlet as NP
|
import qualified Text.Hamlet as NP
|
||||||
import Data.Text.Lazy.Builder (fromLazyText)
|
import Data.Text.Lazy.Builder (fromLazyText, Builder)
|
||||||
import Text.Blaze.Html (toHtml, preEscapedToMarkup)
|
import Text.Blaze.Html (toHtml, preEscapedToMarkup)
|
||||||
import qualified Data.Text.Lazy as TL
|
import qualified Data.Text.Lazy as TL
|
||||||
import Control.Monad.Base (MonadBase (liftBase))
|
import Control.Monad.Base (MonadBase (liftBase))
|
||||||
@ -120,10 +121,21 @@ class ToWidget sub master a where
|
|||||||
|
|
||||||
type RY master = Route master -> [(Text, Text)] -> Text
|
type RY master = Route master -> [(Text, Text)] -> Text
|
||||||
|
|
||||||
|
-- | Newtype wrapper allowing injection of arbitrary content into CSS.
|
||||||
|
--
|
||||||
|
-- Usage:
|
||||||
|
--
|
||||||
|
-- > toWidget $ CssBuilder "p { color: red }"
|
||||||
|
--
|
||||||
|
-- Since: 1.1.3
|
||||||
|
newtype CssBuilder = CssBuilder { unCssBuilder :: Builder }
|
||||||
|
|
||||||
instance render ~ RY master => ToWidget sub master (render -> Html) where
|
instance render ~ RY master => ToWidget sub master (render -> Html) where
|
||||||
toWidget x = tell $ GWData (Body x) mempty mempty mempty mempty mempty mempty
|
toWidget x = tell $ GWData (Body x) mempty mempty mempty mempty mempty mempty
|
||||||
instance render ~ RY master => ToWidget sub master (render -> Css) where
|
instance render ~ RY master => ToWidget sub master (render -> Css) where
|
||||||
toWidget x = tell $ GWData mempty mempty mempty mempty (Map.singleton Nothing $ \r -> fromLazyText $ renderCss $ x r) mempty mempty
|
toWidget x = toWidget $ CssBuilder . fromLazyText . renderCss . x
|
||||||
|
instance render ~ RY master => ToWidget sub master (render -> CssBuilder) where
|
||||||
|
toWidget x = tell $ GWData mempty mempty mempty mempty (Map.singleton Nothing $ unCssBuilder . x) mempty mempty
|
||||||
instance render ~ RY master => ToWidget sub master (render -> Javascript) where
|
instance render ~ RY master => ToWidget sub master (render -> Javascript) where
|
||||||
toWidget x = tell $ GWData mempty mempty mempty mempty mempty (Just x) mempty
|
toWidget x = tell $ GWData mempty mempty mempty mempty mempty (Just x) mempty
|
||||||
instance (sub' ~ sub, master' ~ master) => ToWidget sub' master' (GWidget sub master ()) where
|
instance (sub' ~ sub, master' ~ master) => ToWidget sub' master' (GWidget sub master ()) where
|
||||||
@ -148,6 +160,8 @@ instance render ~ RY master => ToWidgetHead sub master (render -> Html) where
|
|||||||
toWidgetHead = tell . GWData mempty mempty mempty mempty mempty mempty . Head
|
toWidgetHead = tell . GWData mempty mempty mempty mempty mempty mempty . Head
|
||||||
instance render ~ RY master => ToWidgetHead sub master (render -> Css) where
|
instance render ~ RY master => ToWidgetHead sub master (render -> Css) where
|
||||||
toWidgetHead = toWidget
|
toWidgetHead = toWidget
|
||||||
|
instance render ~ RY master => ToWidgetHead sub master (render -> CssBuilder) where
|
||||||
|
toWidgetHead = toWidget
|
||||||
instance render ~ RY master => ToWidgetHead sub master (render -> Javascript) where
|
instance render ~ RY master => ToWidgetHead sub master (render -> Javascript) where
|
||||||
toWidgetHead j = toWidgetHead $ \r -> H.script $ preEscapedLazyText $ renderJavascriptUrl r j
|
toWidgetHead j = toWidgetHead $ \r -> H.script $ preEscapedLazyText $ renderJavascriptUrl r j
|
||||||
instance ToWidgetHead sub master Html where
|
instance ToWidgetHead sub master Html where
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
name: yesod-core
|
name: yesod-core
|
||||||
version: 1.1.2.2
|
version: 1.1.3
|
||||||
license: MIT
|
license: MIT
|
||||||
license-file: LICENSE
|
license-file: LICENSE
|
||||||
author: Michael Snoyman <michael@snoyman.com>
|
author: Michael Snoyman <michael@snoyman.com>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user