| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Yesod.Core.Widget
Contents
Description
Widgets combine HTML with JS and CSS dependencies with a unique identifier generator, allowing you to create truly modular HTML components.
- data WidgetT site m a
- data PageContent url = PageContent {}
- whamlet :: QuasiQuoter
- whamletFile :: FilePath -> Q Exp
- ihamletToRepHtml :: (MonadHandler m, RenderMessage (HandlerSite m) message) => HtmlUrlI18n message (Route (HandlerSite m)) -> m Html
- ihamletToHtml :: (MonadHandler m, RenderMessage (HandlerSite m) message) => HtmlUrlI18n message (Route (HandlerSite m)) -> m Html
- class ToWidget site a where
- class ToWidgetHead site a where
- class ToWidgetBody site a where
- class ToWidgetMedia site a where
- setTitle :: MonadWidget m => Html -> m ()
- setTitleI :: (MonadWidget m, RenderMessage (HandlerSite m) msg) => msg -> m ()
- addStylesheet :: MonadWidget m => Route (HandlerSite m) -> m ()
- addStylesheetAttrs :: MonadWidget m => Route (HandlerSite m) -> [(Text, Text)] -> m ()
- addStylesheetRemote :: MonadWidget m => Text -> m ()
- addStylesheetRemoteAttrs :: MonadWidget m => Text -> [(Text, Text)] -> m ()
- addStylesheetEither :: MonadWidget m => Either (Route (HandlerSite m)) Text -> m ()
- newtype CssBuilder = CssBuilder {}
- addScript :: MonadWidget m => Route (HandlerSite m) -> m ()
- addScriptAttrs :: MonadWidget m => Route (HandlerSite m) -> [(Text, Text)] -> m ()
- addScriptRemote :: MonadWidget m => Text -> m ()
- addScriptRemoteAttrs :: MonadWidget m => Text -> [(Text, Text)] -> m ()
- addScriptEither :: MonadWidget m => Either (Route (HandlerSite m)) Text -> m ()
- widgetToParentWidget :: MonadIO m => WidgetT child IO a -> HandlerT child (HandlerT parent m) (WidgetT parent m a)
- handlerToWidget :: Monad m => HandlerT site m a -> WidgetT site m a
- whamletFileWithSettings :: HamletSettings -> FilePath -> Q Exp
- asWidgetT :: WidgetT site m () -> WidgetT site m ()
Datatype
A generic widget, allowing specification of both the subsite and master
site datatypes. While this is simply a WriterT, we define a newtype for
better error messages.
Instances
| MonadBaseControl b m => MonadBaseControl b (WidgetT site m) # | |
| MonadBase b m => MonadBase b (WidgetT site m) # | |
| Monad m => MonadReader site (WidgetT site m) # | |
| ((~) * site' site, (~) (* -> *) IO m, (~) * a ()) => ToWidget site' (WidgetT site m a) # | |
| MonadTrans (WidgetT site) # | |
| Monad m => Monad (WidgetT site m) # | |
| Monad m => Functor (WidgetT site m) # | |
| Monad m => Applicative (WidgetT site m) # | |
| MonadIO m => MonadIO (WidgetT site m) # | |
| MonadActive m => MonadActive (WidgetT site m) # | |
| MonadThrow m => MonadThrow (WidgetT site m) # | |
| MonadCatch m => MonadCatch (WidgetT site m) # | |
| MonadMask m => MonadMask (WidgetT site m) # | |
| MonadIO m => MonadLogger (WidgetT site m) # | |
| MonadIO m => MonadLoggerIO (WidgetT site m) # | |
| (MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (WidgetT site m) # | |
| MonadResourceBase m => MonadWidget (WidgetT site m) # | |
| MonadResourceBase m => MonadHandler (WidgetT site m) # | |
| (Monad m, (~) * a ()) => IsString (WidgetT site m a) # | A For example, in a yesod-scaffold site you could use: getHomeR = do defaultLayout "Widget text" |
| ((~) * a (), Monad m) => Semigroup (WidgetT site m a) # | |
| ((~) * a (), Monad m) => Monoid (WidgetT site m a) # | |
| type HandlerSite (WidgetT site m) # | |
| type StM (WidgetT site m) a # | |
data PageContent url #
Content for a web page. By providing this datatype, we can easily create generic site templates, which would have the type signature:
PageContent url -> HtmlUrl url
Special Hamlet quasiquoter/TH for Widgets
whamlet :: QuasiQuoter #
whamletFile :: FilePath -> Q Exp #
ihamletToRepHtml :: (MonadHandler m, RenderMessage (HandlerSite m) message) => HtmlUrlI18n message (Route (HandlerSite m)) -> m Html #
ihamletToHtml :: (MonadHandler m, RenderMessage (HandlerSite m) message) => HtmlUrlI18n message (Route (HandlerSite m)) -> m Html #
Convert to Widget
Minimal complete definition
Methods
toWidget :: (MonadWidget m, HandlerSite m ~ site) => a -> m () #
Instances
| ToWidget site Builder # | Since: 1.4.28 |
| ToWidget site Text # | Since: 1.4.28 |
| ToWidget site Text # | Since: 1.4.28 |
| ToWidget site Html # | |
| ToWidget site Javascript # | |
| ToWidget site CssBuilder # | |
| ToWidget site Css # | |
| (~) * render (RY site) => ToWidget site (render -> Javascript) # | |
| (~) * render (RY site) => ToWidget site (render -> CssBuilder) # | |
| (~) * render (RY site) => ToWidget site (render -> Css) # | |
| (~) * render (RY site) => ToWidget site (render -> Html) # | |
| ((~) * site' site, (~) (* -> *) IO m, (~) * a ()) => ToWidget site' (WidgetT site m a) # | |
class ToWidgetHead site a where #
Minimal complete definition
Methods
toWidgetHead :: (MonadWidget m, HandlerSite m ~ site) => a -> m () #
Instances
| ToWidgetHead site Html # | |
| ToWidgetHead site Javascript # | |
| ToWidgetHead site CssBuilder # | |
| ToWidgetHead site Css # | |
| (~) * render (RY site) => ToWidgetHead site (render -> Javascript) # | |
| (~) * render (RY site) => ToWidgetHead site (render -> CssBuilder) # | |
| (~) * render (RY site) => ToWidgetHead site (render -> Css) # | |
| (~) * render (RY site) => ToWidgetHead site (render -> Html) # | |
class ToWidgetBody site a where #
Minimal complete definition
Methods
toWidgetBody :: (MonadWidget m, HandlerSite m ~ site) => a -> m () #
Instances
| ToWidgetBody site Html # | |
| ToWidgetBody site Javascript # | |
| (~) * render (RY site) => ToWidgetBody site (render -> Javascript) # | |
| (~) * render (RY site) => ToWidgetBody site (render -> Html) # | |
class ToWidgetMedia site a where #
Allows adding some CSS to the page with a specific media type.
Since 1.2
Minimal complete definition
Methods
toWidgetMedia :: (MonadWidget m, HandlerSite m ~ site) => Text -> a -> m () #
Add the given content to the page, but only for the given media type.
Since 1.2
Instances
| ToWidgetMedia site CssBuilder # | |
| ToWidgetMedia site Css # | |
| (~) * render (RY site) => ToWidgetMedia site (render -> CssBuilder) # | |
| (~) * render (RY site) => ToWidgetMedia site (render -> Css) # | |
Creating
Head of page
setTitle :: MonadWidget m => Html -> m () #
Set the page title. Calling setTitle multiple times overrides previously
set values.
setTitleI :: (MonadWidget m, RenderMessage (HandlerSite m) msg) => msg -> m () #
Set the page title. Calling setTitle multiple times overrides previously
set values.
CSS
addStylesheet :: MonadWidget m => Route (HandlerSite m) -> m () #
Link to the specified local stylesheet.
addStylesheetAttrs :: MonadWidget m => Route (HandlerSite m) -> [(Text, Text)] -> m () #
Link to the specified local stylesheet.
addStylesheetRemote :: MonadWidget m => Text -> m () #
Link to the specified remote stylesheet.
addStylesheetRemoteAttrs :: MonadWidget m => Text -> [(Text, Text)] -> m () #
Link to the specified remote stylesheet.
addStylesheetEither :: MonadWidget m => Either (Route (HandlerSite m)) Text -> m () #
newtype CssBuilder #
Newtype wrapper allowing injection of arbitrary content into CSS.
Usage:
toWidget $ CssBuilder "p { color: red }"Since: 1.1.3
Constructors
| CssBuilder | |
Fields | |
Instances
| ToWidgetHead site CssBuilder # | |
| ToWidgetMedia site CssBuilder # | |
| ToWidget site CssBuilder # | |
| (~) * render (RY site) => ToWidgetHead site (render -> CssBuilder) # | |
| (~) * render (RY site) => ToWidgetMedia site (render -> CssBuilder) # | |
| (~) * render (RY site) => ToWidget site (render -> CssBuilder) # | |
Javascript
addScript :: MonadWidget m => Route (HandlerSite m) -> m () #
Link to the specified local script.
addScriptAttrs :: MonadWidget m => Route (HandlerSite m) -> [(Text, Text)] -> m () #
Link to the specified local script.
addScriptRemote :: MonadWidget m => Text -> m () #
Link to the specified remote script.
addScriptRemoteAttrs :: MonadWidget m => Text -> [(Text, Text)] -> m () #
Link to the specified remote script.
addScriptEither :: MonadWidget m => Either (Route (HandlerSite m)) Text -> m () #
Subsites
widgetToParentWidget :: MonadIO m => WidgetT child IO a -> HandlerT child (HandlerT parent m) (WidgetT parent m a) #
handlerToWidget :: Monad m => HandlerT site m a -> WidgetT site m a #
Internal
whamletFileWithSettings :: HamletSettings -> FilePath -> Q Exp #