Module

PsSpa.Html.DSL

Package
purescript-ps-spa
Repository
the-man-with-a-golden-mind/ps-spa

Record-based DSL on top of PsSpa.Html.

Usage:

import PsSpa.Html.DSL as D

view = D.div { className: "page" } [ D.h1 { className: "title" } [ D.text "Hello" ] , D.button { className: "cta", onClick: Submit } [ D.text "Click" ] ]

The DSL desugars to the same Html / Attribute ADT used by the rest of ps-spa, so it interoperates with the existing PsSpa.Html helpers.

#ToAttribute Source

class ToAttribute :: Symbol -> Type -> Type -> Constraintclass ToAttribute (name :: Symbol) typ msg  where

Each (field name, value type) pair produces zero or more attributes. Returning an empty array is the way to opt out — e.g. boolean attributes with the value false should not render at all. Instances that need to emit more than one attribute (data-* / aria-* / event composites) can.

Members

Instances

#FromAttrs Source

class FromAttrs :: RowList Type -> Row Type -> Type -> Constraintclass FromAttrs (rl :: RowList Type) (r :: Row Type) msg  where

Members

Instances

#KeyValue Source

newtype KeyValue

Lightweight pair used for dataAttrs and ariaAttrs lists.

D.div { dataAttrs: [ D.kv "state" "open", D.kv "test-id" "main" ] } []

Constructors

Instances

#kv Source

kv :: String -> String -> KeyValue

Smart constructor for KeyValue.

#text Source

text :: forall msg. String -> Html msg

#a Source

a :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#abbr Source

abbr :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#address Source

address :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#article Source

article :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#aside Source

aside :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#audio Source

audio :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#b Source

b :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#bdi Source

bdi :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#bdo Source

bdo :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#blockquote Source

blockquote :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#body Source

body :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#button Source

button :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#canvas Source

canvas :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#caption Source

caption :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#cite Source

cite :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#code Source

code :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#colgroup Source

colgroup :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#data_ Source

data_ :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#datalist Source

datalist :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#dd Source

dd :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#del Source

del :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#details Source

details :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#dfn Source

dfn :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#dialog Source

dialog :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#div Source

div :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#dl Source

dl :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#dt Source

dt :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#em Source

em :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#fieldset Source

fieldset :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#figcaption Source

figcaption :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#figure Source

figure :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#footer Source

footer :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#form Source

form :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#h1 Source

h1 :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#h2 Source

h2 :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#h3 Source

h3 :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#h4 Source

h4 :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#h5 Source

h5 :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#h6 Source

h6 :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#head_ Source

head_ :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#header Source

header :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#hgroup Source

hgroup :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#html Source

html :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#i Source

i :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#iframe Source

iframe :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#ins Source

ins :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#kbd Source

kbd :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#label Source

label :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#legend Source

legend :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#li Source

li :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#main Source

main :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#map_ Source

map_ :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#mark Source

mark :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#math Source

math :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#menu Source

menu :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#meter Source

meter :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#nav Source

nav :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#noscript Source

noscript :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#object Source

object :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#ol Source

ol :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#optgroup Source

optgroup :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#option Source

option :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#output Source

output :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#p Source

p :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#picture Source

picture :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#pre Source

pre :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#progress Source

progress :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#q Source

q :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#rp Source

rp :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#rt Source

rt :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#ruby Source

ruby :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#s Source

s :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#samp Source

samp :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#script Source

script :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#search Source

search :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#section Source

section :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#select Source

select :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#slot Source

slot :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#small Source

small :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#span Source

span :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#strong Source

strong :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#style Source

style :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#sub Source

sub :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#summary Source

summary :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#sup Source

sup :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#svg Source

svg :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#table Source

table :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#tbody Source

tbody :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#td Source

td :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#template Source

template :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#textarea Source

textarea :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#tfoot Source

tfoot :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#th Source

th :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#thead Source

thead :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#time Source

time :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#title Source

title :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#tr Source

tr :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#u Source

u :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#ul Source

ul :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#var Source

var :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#video Source

video :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Array (Html msg) -> Html msg

#area Source

area :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#base Source

base :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#br Source

br :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#col Source

col :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#embed Source

embed :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#hr Source

hr :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#img Source

img :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#input Source

input :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#meta Source

meta :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#source Source

source :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#track Source

track :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#wbr Source

wbr :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => Record r -> Html msg

#element Source

element :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => String -> Record r -> Array (Html msg) -> Html msg

#voidElement Source

voidElement :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => String -> Record r -> Html msg

#keyed Source

keyed :: forall r rl msg. RowToList r rl => FromAttrs rl r msg => String -> Record r -> Array (Tuple String (Html msg)) -> Html msg

Record-attr flavour of Html.keyed. Use this when you want stable per-row DOM identity across reorders (drag-and-drop, virtualisation, list sorts).

D.keyed "ul" { className: "list" } [ Tuple "todo-1" (D.li { className: "row" } [ D.text "A" ]) , Tuple "todo-2" (D.li { className: "row" } [ D.text "B" ]) ]