Deprecated. Use WidgetFor directly
Moduleyesod-core-1.6.26.0Haskell2010
Yesod.Core.Widget
Widgets combine HTML with JS and CSS dependencies with a unique identifier generator, allowing you to create truly modular HTML components.
- 4 types
- 4 classes
- 25 values
- Packageyesod-core-1.6.26.0
- Exports33
- LanguageHaskell2010
- LicenceMIT
- SourceWidget.hs
Datatype
3 declarationsA 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.
Instances20ToWidget, Monad, Functor, Applicative, MonadIO, MonadThrow, …
(site' ~ site, a ~ ()) => ToWidget site' (WidgetFor site a)Defined in yesod-core-1.6.26.0 · Yesod.Core.WidgetMonad (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesFunctor (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesApplicative (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesMonadIO (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesMonadThrow (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesPrimMonad (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesMonadUnliftIO (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesMonadResource (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesMonadLogger (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesMonadLoggerIO (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesMonadHandler (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.Class.HandlerMonadWidget (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.Class.HandlerMonadReader (WidgetData site) (WidgetFor site)Defined in yesod-core-1.6.26.0 · Yesod.Core.Typesa ~ () => IsString (WidgetFor site a)Defined in yesod-core-1.6.26.0 · Yesod.Core.TypesA String can be trivially promoted to a widget.
For example, in a yesod-scaffold site you could use:
getHomeR = do defaultLayout "Widget text"a ~ () => Semigroup (WidgetFor site a)Defined in yesod-core-1.6.26.0 · Yesod.Core.Typesa ~ () => Monoid (WidgetFor site a)Defined in yesod-core-1.6.26.0 · Yesod.Core.Typestype PrimState (WidgetFor site) = PrimState IODefined in yesod-core-1.6.26.0 · Yesod.Core.Typestype HandlerSite (WidgetFor site) = siteDefined in yesod-core-1.6.26.0 · Yesod.Core.Class.Handlertype SubHandlerSite (WidgetFor site) = siteDefined in yesod-core-1.6.26.0 · Yesod.Core.Class.Handler
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 urlConstructors
Special Hamlet quasiquoter/TH for Widgets
4 declarationsConvert to Widget
4 declarationsMethods
toWidget :: (MonadWidget m, HandlerSite m ~ site) => a -> m ()
Instances12ToWidget, …
ToWidget site HtmlDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidget site CssDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidget site JavascriptDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidget site TextDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidget site BuilderDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidget site TextDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidget site CssBuilderDefined in yesod-core-1.6.26.0 · Yesod.Core.Widget(site' ~ site, a ~ ()) => ToWidget site' (WidgetFor site a)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidget site (render -> Html)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidget site (render -> Css)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidget site (render -> Javascript)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidget site (render -> CssBuilder)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widget
Methods
toWidgetHead :: (MonadWidget m, HandlerSite m ~ site) => a -> m ()
Instances8ToWidgetHead, …
ToWidgetHead site HtmlDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidgetHead site CssDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidgetHead site JavascriptDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidgetHead site CssBuilderDefined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetHead site (render -> Html)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetHead site (render -> Css)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetHead site (render -> Javascript)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetHead site (render -> CssBuilder)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widget
Methods
toWidgetBody :: (MonadWidget m, HandlerSite m ~ site) => a -> m ()
Instances4ToWidgetBody
ToWidgetBody site HtmlDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidgetBody site JavascriptDefined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetBody site (render -> Html)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetBody site (render -> Javascript)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widget
Allows adding some CSS to the page with a specific media type.
Since 1.2
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
Instances4ToWidgetMedia
ToWidgetMedia site CssDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidgetMedia site CssBuilderDefined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetMedia site (render -> Css)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetMedia site (render -> CssBuilder)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widget
Creating
0 declarationsHead of page
Set the page title.
Calling setTitle or setTitleI multiple times overrides previously set
values.
SEO Notes:
Title tags are the second most important on-page factor for SEO, after content
Every page should have a unique title tag
Start your title tag with your main targeted keyword
Don't stuff your keywords
Google typically shows 55-64 characters, so aim to keep your title length under 60 characters
Set the localised page title.
n.b. See comments for setTitle
setDescription is not idempotent; we recommend setDescriptionIdemp instead Multiple calls to setDescription will insert multiple meta tags in the page head. If you want an idempotent function, use setDescriptionIdemp - but if you do, you may need to change your layout to include pageDescription.
Add description meta tag to the head of the page
Google does not use the description tag as a ranking signal, but the contents of this tag will likely affect your click-through rate since it shows up in search results.
The average length of the description shown in Google's search results is about 160 characters on desktop, and about 130 characters on mobile, at time of writing.
Source: https://www.advancedwebranking.com/blog/meta-tags-important-in-seo/
setDescriptionI is not idempotent; we recommend setDescriptionIdempI instead Multiple calls to setDescriptionI will insert multiple meta tags in the page head. If you want an idempotent function, use setDescriptionIdempI - but if you do, you may need to change your layout to include pageDescription.
Add translated description meta tag to the head of the page
n.b. See comments for setDescription.
Add description meta tag to the head of the page
Google does not use the description tag as a ranking signal, but the contents of this tag will likely affect your click-through rate since it shows up in search results.
The average length of the description shown in Google's search results is about 160 characters on desktop, and about 130 characters on mobile, at time of writing.
Unlike setDescription, this version is *idempotent* - calling it multiple times will result in only a single description meta tag in the head.
Source: https://www.advancedwebranking.com/blog/meta-tags-important-in-seo/
Add translated description meta tag to the head of the page
n.b. See comments for setDescriptionIdemp.
Unlike setDescriptionI, this version is *idempotent* - calling it multiple times will result in only a single description meta tag in the head.
Add OpenGraph type meta tag to the head of the page
See all available OG types here: https://ogp.me/#types
Add OpenGraph image meta tag to the head of the page
Best practices:
Use custom images for shareable pages, e.g., homepage, articles, etc.
Use your logo or any other branded image for the rest of your pages.
Use images with a 1.91:1 ratio and minimum recommended dimensions of 1200x630 for optimal clarity across all devices.
CSS
Link to the specified local stylesheet.
Link to the specified local stylesheet.
Link to the specified remote stylesheet.
Link to the specified remote stylesheet.
Newtype wrapper allowing injection of arbitrary content into CSS.
Usage:
toWidget $ CssBuilder "p { color: red }"Since: 1.1.3
Constructors
Instances6ToWidget, ToWidgetHead, ToWidgetMedia
ToWidget site CssBuilderDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidgetHead site CssBuilderDefined in yesod-core-1.6.26.0 · Yesod.Core.WidgetToWidgetMedia site CssBuilderDefined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidget site (render -> CssBuilder)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetHead site (render -> CssBuilder)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widgetrender ~ RY site => ToWidgetMedia site (render -> CssBuilder)Defined in yesod-core-1.6.26.0 · Yesod.Core.Widget
Javascript
Link to the specified local script.
Link to the specified local script.
Link to the specified remote script.
Link to the specified remote script.