Attributes.md

May 17, 2018 · View on GitHub

Module Html.Attributes

Helper functions for HTML attributes. They are organized roughly by category. Each attribute is labeled with the HTML tags it can be used with, so just search the page for video if you want video stuff.

If you cannot find what you are looking for, go to the Custom Attributes section to learn how to create new helpers.

style

style :: forall msg. List (String /\ String) -> Attribute msg

Specify a list of styles.

myStyle : Attribute msg
myStyle =
  style
    [ ("backgroundColor", "red")
    , ("height", "90px")
    , ("width", "100%")
    ]

greeting : Html msg
greeting =
  div [ myStyle ] [ text "Hello!" ]

There is no Html.Styles module because best practices for working with HTML suggest that this should primarily be specified in CSS files. So the general recommendation is to use this function lightly.

property

property :: forall msg. String -> Value -> Attribute msg

Create properties, like saying domNode.className = 'greeting' in JavaScript.

import Json.Encode as Encode

class : String -> Attribute msg
class name =
  property "className" (Encode.string name)

Read more about the difference between properties and attributes here.

attribute

attribute :: forall msg. String -> String -> Attribute msg

Create attributes, like saying domNode.setAttribute('class', 'greeting') in JavaScript.

class : String -> Attribute msg
class name =
  attribute "class" name

Read more about the difference between properties and attributes here.

map

map :: forall msg a. (a -> msg) -> Attribute a -> Attribute msg

Transform the messages produced by an Attribute.

class_

class_ :: forall msg. String -> Attribute msg

Often used with CSS to style elements with common properties.

classList

classList :: forall msg. List (String /\ Bool) -> Attribute msg

This function makes it easier to build a space-separated class attribute. Each class can easily be added and removed depending on the boolean value it is paired with.

renderMessage : Msg -> Html
renderMessage msg =
  div
    [
      classList [
        ("message", True),
        ("message-important", msg.isImportant),
        ("message-read", msg.isRead)
      ]
    ]
    [ text msg.content ]

id

id :: forall msg. String -> Attribute msg

Often used with CSS to style a specific element. The value of this attribute must be unique.

title

title :: forall msg. String -> Attribute msg

Text to be displayed in a tooltip when hovering over the element.

hidden

hidden :: forall msg. Bool -> Attribute msg

Indicates the relevance of an element.

type_

type_ :: forall msg. String -> Attribute msg

Defines the type of a button, input, embed, object, script, source, style, or menu.

value

value :: forall msg. String -> Attribute msg

Defines a default value which will be displayed in a button, option, input, li, meter, progress, or param.

defaultValue

defaultValue :: forall msg. String -> Attribute msg

Defines an initial value which will be displayed in an input when that input is added to the DOM. Unlike value, altering defaultValue after the input element has been added to the DOM has no effect.

checked

checked :: forall msg. Bool -> Attribute msg

Indicates whether an input of type checkbox is checked.

placeholder

placeholder :: forall msg. String -> Attribute msg

Provides a hint to the user of what can be entered into an input or textarea.

selected

selected :: forall msg. Bool -> Attribute msg

Defines which option will be selected on page load.

accept

accept :: forall msg. String -> Attribute msg

List of types the server accepts, typically a file type. For form and input.

acceptCharset

acceptCharset :: forall msg. String -> Attribute msg

List of supported charsets in a form.

action

action :: forall msg. String -> Attribute msg

The URI of a program that processes the information submitted via a form.

autocomplete

autocomplete :: forall msg. Bool -> Attribute msg

Indicates whether a form or an input can have their values automatically completed by the browser.

autofocus

autofocus :: forall msg. Bool -> Attribute msg

The element should be automatically focused after the page loaded. For button, input, keygen, select, and textarea.

disabled

disabled :: forall msg. Bool -> Attribute msg

Indicates whether the user can interact with a button, fieldset, input, keygen, optgroup, option, select or textarea.

enctype

enctype :: forall msg. String -> Attribute msg

How form data should be encoded when submitted with the POST method. Options include: application/x-www-form-urlencoded, multipart/form-data, and text/plain.

formaction

formaction :: forall msg. String -> Attribute msg

Indicates the action of an input or button. This overrides the action defined in the surrounding form.

list

list :: forall msg. String -> Attribute msg

Associates an input with a datalist tag. The datalist gives some pre-defined options to suggest to the user as they interact with an input. The value of the list attribute must match the id of a datalist node. For input.

maxlength

maxlength :: forall msg. Int -> Attribute msg

Defines the maximum number of characters allowed in an input or textarea.

minlength

minlength :: forall msg. Int -> Attribute msg

Defines the minimum number of characters allowed in an input or textarea.

method

method :: forall msg. String -> Attribute msg

Defines which HTTP method to use when submitting a form. Can be GET (default) or POST.

multiple

multiple :: forall msg. Bool -> Attribute msg

Indicates whether multiple values can be entered in an input of type email or file. Can also indicate that you can select many options.

name

name :: forall msg. String -> Attribute msg

Name of the element. For example used by the server to identify the fields in form submits. For button, form, fieldset, iframe, input, keygen, object, output, select, textarea, map, meta, and param.

novalidate

novalidate :: forall msg. Bool -> Attribute msg

This attribute indicates that a form shouldn't be validated when submitted.

pattern

pattern :: forall msg. String -> Attribute msg

Defines a regular expression which an input's value will be validated against.

readonly

readonly :: forall msg. Bool -> Attribute msg

Indicates whether an input or textarea can be edited.

required

required :: forall msg. Bool -> Attribute msg

Indicates whether this element is required to fill out or not. For input, select, and textarea.

size

size :: forall msg. Int -> Attribute msg

For input specifies the width of an input in characters.

For select specifies the number of visible options in a drop-down list.

for

for :: forall msg. String -> Attribute msg

The element ID described by this label or the element IDs that are used for an output.

form

form :: forall msg. String -> Attribute msg

Indicates the element ID of the form that owns this particular button, fieldset, input, keygen, label, meter, object, output, progress, select, or textarea.

max

max :: forall msg. String -> Attribute msg

Indicates the maximum value allowed. When using an input of type number or date, the max value must be a number or date. For input, meter, and progress.

min

min :: forall msg. String -> Attribute msg

Indicates the minimum value allowed. When using an input of type number or date, the min value must be a number or date. For input and meter.

step

step :: forall msg. String -> Attribute msg

Add a step size to an input. Use step "any" to allow any floating-point number to be used in the input.

cols

cols :: forall msg. Int -> Attribute msg

Defines the number of columns in a textarea.

rows

rows :: forall msg. Int -> Attribute msg

Defines the number of rows in a textarea.

wrap

wrap :: forall msg. String -> Attribute msg

Indicates whether the text should be wrapped in a textarea. Possible values are "hard" and "soft".

href

href :: forall msg. String -> Attribute msg

The URL of a linked resource, such as a, area, base, or link.

target

target :: forall msg. String -> Attribute msg

Specify where the results of clicking an a, area, base, or form should appear. Possible special values include:

  • _blank — a new window or tab
  • _self — the same frame (this is default)
  • _parent — the parent frame
  • _top — the full body of the window

You can also give the name of any frame you have created.

download

download :: forall msg. Bool -> Attribute msg

Indicates that clicking an a and area will download the resource directly.

downloadAs

downloadAs :: forall msg. String -> Attribute msg

Indicates that clicking an a and area will download the resource directly, and that the downloaded resource with have the given filename.

hreflang

hreflang :: forall msg. String -> Attribute msg

Two-letter language code of the linked resource of an a, area, or link.

media

media :: forall msg. String -> Attribute msg

Specifies a hint of the target media of a a, area, link, source, or style.

ping

ping :: forall msg. String -> Attribute msg

Specify a URL to send a short POST request to when the user clicks on an a or area. Useful for monitoring and tracking.

rel

rel :: forall msg. String -> Attribute msg

Specifies the relationship of the target object to the link object. For a, area, link.

ismap

ismap :: forall msg. Bool -> Attribute msg

When an img is a descendent of an a tag, the ismap attribute indicates that the click location should be added to the parent a's href as a query string.

usemap

usemap :: forall msg. String -> Attribute msg

Specify the hash name reference of a map that should be used for an img or object. A hash name reference is a hash symbol followed by the element's name or id. E.g. "#planet-map".

shape

shape :: forall msg. String -> Attribute msg

Declare the shape of the clickable area in an a or area. Valid values include: default, rect, circle, poly. This attribute can be paired with coords to create more particular shapes.

coords

coords :: forall msg. String -> Attribute msg

A set of values specifying the coordinates of the hot-spot region in an area. Needs to be paired with a shape attribute to be meaningful.

src

src :: forall msg. String -> Attribute msg

The URL of the embeddable content. For audio, embed, iframe, img, input, script, source, track, and video.

height

height :: forall msg. Int -> Attribute msg

Declare the height of a canvas, embed, iframe, img, input, object, or video.

width

width :: forall msg. Int -> Attribute msg

Declare the width of a canvas, embed, iframe, img, input, object, or video.

alt

alt :: forall msg. String -> Attribute msg

Alternative text in case an image can't be displayed. Works with img, area, and input.

autoplay

autoplay :: forall msg. Bool -> Attribute msg

The audio or video should play as soon as possible.

controls

controls :: forall msg. Bool -> Attribute msg

Indicates whether the browser should show playback controls for the audio or video.

loop

loop :: forall msg. Bool -> Attribute msg

Indicates whether the audio or video should start playing from the start when it's finished.

preload

preload :: forall msg. String -> Attribute msg

Control how much of an audio or video resource should be preloaded.

poster

poster :: forall msg. String -> Attribute msg

A URL indicating a poster frame to show until the user plays or seeks the video.

default

default :: forall msg. Bool -> Attribute msg

Indicates that the track should be enabled unless the user's preferences indicate something different.

kind

kind :: forall msg. String -> Attribute msg

Specifies the kind of text track.

srclang

srclang :: forall msg. String -> Attribute msg

A two letter language code indicating the language of the track text data.

sandbox

sandbox :: forall msg. String -> Attribute msg

A space separated list of security restrictions you'd like to lift for an iframe.

seamless

seamless :: forall msg. Bool -> Attribute msg

Make an iframe look like part of the containing document.

srcdoc

srcdoc :: forall msg. String -> Attribute msg

An HTML document that will be displayed as the body of an iframe. It will override the content of the src attribute if it has been specified.

reversed

reversed :: forall msg. Bool -> Attribute msg

Indicates whether an ordered list ol should be displayed in a descending order instead of a ascending.

start

start :: forall msg. Int -> Attribute msg

Defines the first number of an ordered list if you want it to be something besides 1.

align

align :: forall msg. String -> Attribute msg

Specifies the horizontal alignment of a caption, col, colgroup, hr, iframe, img, table, tbody, td, tfoot, th, thead, or tr.

colspan

colspan :: forall msg. Int -> Attribute msg

The colspan attribute defines the number of columns a cell should span. For td and th.

rowspan

rowspan :: forall msg. Int -> Attribute msg

Defines the number of rows a table cell should span over. For td and th.

headers

headers :: forall msg. String -> Attribute msg

A space separated list of element IDs indicating which th elements are headers for this cell. For td and th.

scope

scope :: forall msg. String -> Attribute msg

Specifies the scope of a header cell th. Possible values are: col, row, colgroup, rowgroup.

async

async :: forall msg. Bool -> Attribute msg

Indicates that the script should be executed asynchronously.

charset

charset :: forall msg. String -> Attribute msg

Declares the character encoding of the page or script. Common values include:

  • UTF-8 - Character encoding for Unicode
  • ISO-8859-1 - Character encoding for the Latin alphabet

For meta and script.

content

content :: forall msg. String -> Attribute msg

A value associated with http-equiv or name depending on the context. For meta.

defer

defer :: forall msg. Bool -> Attribute msg

Indicates that a script should be executed after the page has been parsed.

httpEquiv

httpEquiv :: forall msg. String -> Attribute msg

This attribute is an indicator that is paired with the content attribute, indicating what that content means. httpEquiv can take on three different values: content-type, default-style, or refresh. For meta.

language

language :: forall msg. String -> Attribute msg

Defines the script language used in a script.

scoped

scoped :: forall msg. Bool -> Attribute msg

Indicates that a style should only apply to its parent and all of the parents children.

accesskey

accesskey :: forall msg. Char -> Attribute msg

Defines a keyboard shortcut to activate or add focus to the element.

contenteditable

contenteditable :: forall msg. Bool -> Attribute msg

Indicates whether the element's content is editable.

contextmenu

contextmenu :: forall msg. String -> Attribute msg

Defines the ID of a menu element which will serve as the element's context menu.

dir

dir :: forall msg. String -> Attribute msg

Defines the text direction. Allowed values are ltr (Left-To-Right) or rtl (Right-To-Left).

draggable

draggable :: forall msg. String -> Attribute msg

Defines whether the element can be dragged.

dropzone

dropzone :: forall msg. String -> Attribute msg

Indicates that the element accept the dropping of content on it.

itemprop

itemprop :: forall msg. String -> Attribute msg

lang

lang :: forall msg. String -> Attribute msg

Defines the language used in the element.

spellcheck

spellcheck :: forall msg. Bool -> Attribute msg

Indicates whether spell checking is allowed for the element.

tabindex

tabindex :: forall msg. Int -> Attribute msg

Overrides the browser's default tab order and follows the one specified instead.

challenge

challenge :: forall msg. String -> Attribute msg

A challenge string that is submitted along with the public key in a keygen.

keytype

keytype :: forall msg. String -> Attribute msg

Specifies the type of key generated by a keygen. Possible values are: rsa, dsa, and ec.

cite

cite :: forall msg. String -> Attribute msg

Contains a URI which points to the source of the quote or change in a blockquote, del, ins, or q.

datetime

datetime :: forall msg. String -> Attribute msg

Indicates the date and time associated with the element. For del, ins, time.

pubdate

pubdate :: forall msg. String -> Attribute msg

Indicates whether this date and time is the date of the nearest article ancestor element. For time.

manifest

manifest :: forall msg. String -> Attribute msg

Specifies the URL of the cache manifest for an html tag.