ToWidget* classes
This commit is contained in:
parent
b65baed9c4
commit
ccb9bba8cd
@ -3,6 +3,7 @@
|
|||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
|
{-# LANGUAGE TypeSynonymInstances #-}
|
||||||
-- | Widgets combine HTML with JS and CSS dependencies with a unique identifier
|
-- | Widgets combine HTML with JS and CSS dependencies with a unique identifier
|
||||||
-- generator, allowing you to create truly modular HTML components.
|
-- generator, allowing you to create truly modular HTML components.
|
||||||
module Yesod.Widget
|
module Yesod.Widget
|
||||||
@ -14,6 +15,10 @@ module Yesod.Widget
|
|||||||
, whamlet
|
, whamlet
|
||||||
, whamletFile
|
, whamletFile
|
||||||
, ihamletToRepHtml
|
, ihamletToRepHtml
|
||||||
|
-- * Convert to Widget
|
||||||
|
, ToWidget (..)
|
||||||
|
, ToWidgetHead (..)
|
||||||
|
, ToWidgetBody (..)
|
||||||
-- * Creating
|
-- * Creating
|
||||||
-- ** Head of page
|
-- ** Head of page
|
||||||
, setTitle
|
, setTitle
|
||||||
@ -104,6 +109,48 @@ addSubWidget sub (GWidget w) = do
|
|||||||
GWidget $ tell w'
|
GWidget $ tell w'
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
class ToWidget sub master a where
|
||||||
|
toWidget :: a -> GWidget sub master ()
|
||||||
|
|
||||||
|
instance url ~ Route master => ToWidget sub master (Hamlet url) where
|
||||||
|
toWidget = addHamlet
|
||||||
|
instance url ~ Route master => ToWidget sub master (Cassius url) where
|
||||||
|
toWidget = addCassius
|
||||||
|
instance url ~ Route master => ToWidget sub master (Julius url) where
|
||||||
|
toWidget = addJulius
|
||||||
|
instance ToWidget sub master (GWidget sub master ()) where
|
||||||
|
toWidget = id
|
||||||
|
instance ToWidget sub master Html where
|
||||||
|
toWidget = addHtml
|
||||||
|
instance url ~ Route master => ToWidget sub master (Coffee url) where
|
||||||
|
toWidget = addCoffee
|
||||||
|
|
||||||
|
class ToWidgetBody sub master a where
|
||||||
|
toWidgetBody :: a -> GWidget sub master ()
|
||||||
|
|
||||||
|
instance url ~ Route master => ToWidgetBody sub master (Hamlet url) where
|
||||||
|
toWidgetBody = addHamlet
|
||||||
|
instance url ~ Route master => ToWidgetBody sub master (Julius url) where
|
||||||
|
toWidgetBody = addJulius
|
||||||
|
instance ToWidgetBody sub master Html where
|
||||||
|
toWidgetBody = addHtml
|
||||||
|
instance url ~ Route master => ToWidgetBody sub master (Coffee url) where
|
||||||
|
toWidgetBody = addCoffeeBody
|
||||||
|
|
||||||
|
class ToWidgetHead sub master a where
|
||||||
|
toWidgetHead :: a -> GWidget sub master ()
|
||||||
|
|
||||||
|
instance url ~ Route master => ToWidgetHead sub master (Hamlet url) where
|
||||||
|
toWidgetHead = addHamletHead
|
||||||
|
instance url ~ Route master => ToWidgetHead sub master (Cassius url) where
|
||||||
|
toWidgetHead = addCassius
|
||||||
|
instance url ~ Route master => ToWidgetHead sub master (Julius url) where
|
||||||
|
toWidgetHead = addJulius
|
||||||
|
instance ToWidgetHead sub master Html where
|
||||||
|
toWidgetHead = addHtmlHead
|
||||||
|
instance url ~ Route master => ToWidgetHead sub master (Coffee url) where
|
||||||
|
toWidgetHead = addCoffee
|
||||||
|
|
||||||
-- | Set the page title. Calling 'setTitle' multiple times overrides previously
|
-- | Set the page title. Calling 'setTitle' multiple times overrides previously
|
||||||
-- set values.
|
-- set values.
|
||||||
setTitle :: Monad m => Html -> GGWidget master m ()
|
setTitle :: Monad m => Html -> GGWidget master m ()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user