miso
Copyright(C) 2016-2025 David M. Johnson
LicenseBSD3-style (see the file LICENSE)
MaintainerDavid M. Johnson <code@dmj.io>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Miso.Html

Description

Example usage:

import Miso

data IntAction = Add | Subtract

intView :: Int -> View IntAction
intView n
 = div_
 [ class_ "main"
 ]
 [ btn_
   [ onClick Add
   ]
   [ text_ "+"
   ]
 , text_ $ pack (show n)
 , btn_
   [ onClick Subtract
   ]
   [ text_ "-"
   ]
 ]

More information on how to use miso is available on GitHub

http://github.com/dmjio/miso

Synopsis

Elements

a_ :: [Attribute action] -> [View action] -> View action Source #

abbr_ :: [Attribute action] -> [View action] -> View action Source #

address_ :: [Attribute action] -> [View action] -> View action Source #

area_ :: [Attribute action] -> [View action] -> View action Source #

<area>

Since: 1.9.0.0

article_ :: [Attribute action] -> [View action] -> View action Source #

aside_ :: [Attribute action] -> [View action] -> View action Source #

audio_ :: [Attribute action] -> [View action] -> View action Source #

b_ :: [Attribute action] -> [View action] -> View action Source #

base_ :: [Attribute action] -> [View action] -> View action Source #

<base>

Since: 1.9.0.0

bdi_ :: [Attribute action] -> [View action] -> View action Source #

bdo_ :: [Attribute action] -> [View action] -> View action Source #

blockquote_ :: [Attribute action] -> [View action] -> View action Source #

body_ :: [Attribute action] -> [View action] -> View action Source #

br_ :: [Attribute action] -> View action Source #

button_ :: [Attribute action] -> [View action] -> View action Source #

canvas_ :: [Attribute action] -> [View action] -> View action Source #

<canvas>

Note this just renders a canvas element. See also canvas_ which supports canvas drawing DSL.

caption_ :: [Attribute action] -> [View action] -> View action Source #

cite_ :: [Attribute action] -> [View action] -> View action Source #

code_ :: [Attribute action] -> [View action] -> View action Source #

col_ :: [Attribute action] -> View action Source #

colgroup_ :: [Attribute action] -> [View action] -> View action Source #

datalist_ :: [Attribute action] -> [View action] -> View action Source #

dd_ :: [Attribute action] -> [View action] -> View action Source #

del_ :: [Attribute action] -> [View action] -> View action Source #

details_ :: [Attribute action] -> [View action] -> View action Source #

dfn_ :: [Attribute action] -> [View action] -> View action Source #

dialog_ :: [Attribute action] -> [View action] -> View action Source #

<dialog>

Since: 1.9.0.0

div_ :: [Attribute action] -> [View action] -> View action Source #

dl_ :: [Attribute action] -> [View action] -> View action Source #

dt_ :: [Attribute action] -> [View action] -> View action Source #

em_ :: [Attribute action] -> [View action] -> View action Source #

embed_ :: [Attribute action] -> View action Source #

fencedframe_ :: [Attribute action] -> [View action] -> View action Source #

<fencedframe>

Since: 1.9.0.0

fieldset_ :: [Attribute action] -> [View action] -> View action Source #

figcaption_ :: [Attribute action] -> [View action] -> View action Source #

figure_ :: [Attribute action] -> [View action] -> View action Source #

footer_ :: [Attribute action] -> [View action] -> View action Source #

form :: [Attribute action] -> [View action] -> View action Source #

<form>

For usage in a real-world application with the onSubmit event.

view :: Model -> View action
view model = form [ onSubmit NoOp ] [ input [ type_ "submit" ] ]

Note: onSubmit will use preventDefault = True. This will keep the form from submitting to the server.

h1_ :: [Attribute action] -> [View action] -> View action Source #

h2_ :: [Attribute action] -> [View action] -> View action Source #

h3_ :: [Attribute action] -> [View action] -> View action Source #

h4_ :: [Attribute action] -> [View action] -> View action Source #

h5_ :: [Attribute action] -> [View action] -> View action Source #

h6_ :: [Attribute action] -> [View action] -> View action Source #

head_ :: [Attribute action] -> [View action] -> View action Source #

header_ :: [Attribute action] -> [View action] -> View action Source #

hgroup_ :: [Attribute action] -> [View action] -> View action Source #

<hgroup>

Since: 1.9.0.0

hr_ :: [Attribute action] -> View action Source #

html_ :: [Attribute action] -> [View action] -> View action Source #

i_ :: [Attribute action] -> [View action] -> View action Source #

iframe_ :: [Attribute action] -> [View action] -> View action Source #

img_ :: [Attribute action] -> View action Source #

input_ :: [Attribute action] -> View action Source #

ins_ :: [Attribute action] -> [View action] -> View action Source #

kbd_ :: [Attribute action] -> [View action] -> View action Source #

label_ :: [Attribute action] -> [View action] -> View action Source #

legend_ :: [Attribute action] -> [View action] -> View action Source #

li_ :: [Attribute action] -> [View action] -> View action Source #

link_ :: [Attribute action] -> View action Source #

main_ :: [Attribute action] -> [View action] -> View action Source #

map_ :: [Attribute action] -> [View action] -> View action Source #

<map>

Since: 1.9.0.0

mark_ :: [Attribute action] -> [View action] -> View action Source #

menu_ :: [Attribute action] -> [View action] -> View action Source #

meta_ :: [Attribute action] -> View action Source #

meter_ :: [Attribute action] -> [View action] -> View action Source #

nav_ :: [Attribute action] -> [View action] -> View action Source #

nodeHtml :: MisoString -> [Attribute action] -> [View action] -> View action Source #

Low-level helper used to construct HTML node in View. Almost all functions in this module, like div_, table_ etc. are defined in terms of it.

noscript_ :: [Attribute action] -> [View action] -> View action Source #

<noscript>

Since: 1.9.0.0

object_ :: [Attribute action] -> [View action] -> View action Source #

ol_ :: [Attribute action] -> [View action] -> View action Source #

optgroup_ :: [Attribute action] -> [View action] -> View action Source #

option_ :: [Attribute action] -> [View action] -> View action Source #

output_ :: [Attribute action] -> [View action] -> View action Source #

p_ :: [Attribute action] -> [View action] -> View action Source #

picture_ :: [Attribute action] -> [View action] -> View action Source #

<picture>

Since: 1.9.0.0

pre_ :: [Attribute action] -> [View action] -> View action Source #

progress_ :: [Attribute action] -> [View action] -> View action Source #

q_ :: [Attribute action] -> [View action] -> View action Source #

rp_ :: [Attribute action] -> [View action] -> View action Source #

rt_ :: [Attribute action] -> [View action] -> View action Source #

ruby_ :: [Attribute action] -> [View action] -> View action Source #

s_ :: [Attribute action] -> [View action] -> View action Source #

samp_ :: [Attribute action] -> [View action] -> View action Source #

script_ :: [Attribute action] -> MisoString -> View action Source #

<script>

This takes the raw text to be put in the script tag.

That means that if any part of the text is not trusted there's a potential JavaScript injection. Read more at https://owasp.org/www-community/attacks/xss/

You can also easily shoot yourself in the foot with something like:

script_ [] "</script>"

search_ :: [Attribute action] -> [View action] -> View action Source #

<search>

Since: 1.9.0.0

section_ :: [Attribute action] -> [View action] -> View action Source #

select_ :: [Attribute action] -> [View action] -> View action Source #

slot_ :: [Attribute action] -> [View action] -> View action Source #

<slot>

Since: 1.9.0.0

small_ :: [Attribute action] -> [View action] -> View action Source #

source_ :: [Attribute action] -> View action Source #

span_ :: [Attribute action] -> [View action] -> View action Source #

strong_ :: [Attribute action] -> [View action] -> View action Source #

style_ :: [Attribute action] -> MisoString -> View action Source #

<style>

This takes the raw text to be put in the style tag.

That means that if any part of the text is not trusted there's a potential CSS injection. Read more at https://owasp.org/www-project-web-security-testing-guide/stable/4-Web_Application_Security_Testing/11-Client-side_Testing/05-Testing_for_CSS_Injection

You can also easily shoot yourself in the foot with something like:

style_ [] "</style>"

sub_ :: [Attribute action] -> [View action] -> View action Source #

summary_ :: [Attribute action] -> [View action] -> View action Source #

sup_ :: [Attribute action] -> [View action] -> View action Source #

table_ :: [Attribute action] -> [View action] -> View action Source #

tbody_ :: [Attribute action] -> [View action] -> View action Source #

td_ :: [Attribute action] -> [View action] -> View action Source #

template_ :: [Attribute action] -> [View action] -> View action Source #

<template>

Since: 1.9.0.0

textarea_ :: [Attribute action] -> [View action] -> View action Source #

tfoot_ :: [Attribute action] -> [View action] -> View action Source #

th_ :: [Attribute action] -> [View action] -> View action Source #

thead_ :: [Attribute action] -> [View action] -> View action Source #

time_ :: [Attribute action] -> [View action] -> View action Source #

tr_ :: [Attribute action] -> [View action] -> View action Source #

track_ :: [Attribute action] -> View action Source #

u_ :: [Attribute action] -> [View action] -> View action Source #

ul_ :: [Attribute action] -> [View action] -> View action Source #

var_ :: [Attribute action] -> [View action] -> View action Source #

video_ :: [Attribute action] -> [View action] -> View action Source #

wbr_ :: [Attribute action] -> View action Source #

Attributes

Events

Virtual DOM