mauroc8/elm-html-pipeline/2.0.2

NOTE: the latest version is 3.0.0

Html.Element.Attribute

This module exposes functions to add attributes to an Element.

Note: The code examples will assume the following imports:

import Html.Element as Element exposing (Element)
import Html.Element.Attribute as Attribute
import Html.Element.Event as Event

Helpers

htmlAttribute : Attribute msg -> Element msg -> Element msg

Adds an Html.Attribute to an Element.

This is the base function used to implement all other functions in this module.

htmlAttributes : List (Attribute msg) -> Element msg -> Element msg
batch : List (Element msg -> Element msg) -> Element msg -> Element msg

Flattens a list of functions into a single function.

textStyles =
    Attribute.batch
        [ Attribute.style "font-family" "Monaco, sans-serif"
        , Attribute.style "font-size" "1rem"
        , Attribute.style "line-height" "1.4rem"
        ]


paragraph =
    Element.p
        |> textStyles

Note that adding child nodes is also done with functions of type Element msg -> Element msg, so there is no way (yet?) to prevent someone from doing:

textStyles =
    Attribute.batch
        [ Element.text "Hello"
        , Debug.log "attribute"
        ]
none : Element msg -> Element msg

An empty attribute.

It adds the attribute Html.Attributes.class "".

You can also use the identity function as a empty attribute, but this implementation might work better with the virtual DOM diffing algorithm (unverified).

The rest of the functions in this module are wrappers around the homonymous functions in Html.Attributes.

Primitives

style : String -> String -> Element msg -> Element msg

Specify a style.

greeting : Element msg
greeting =
    Element.div
        |> Element.style "background-color" "red"
        |> Element.style "height" "90px"
        |> Element.style "width" "100%"
        |> Element.text "Hello!"
property : String -> Value -> Element msg -> Element msg

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

import Json.Encode as Encode


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

Read more about the difference between properties and attributes here.

attribute : String -> String -> Element msg -> Element msg

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

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

Read more about the difference between properties and attributes here.

Super Common Attributes

class : String -> Element msg -> Element msg

Often used with CSS to style elements with common properties.

Note: You can have as many class and classList attributes as you want. They all get applied, so if you say [ class "notice", class "notice-seen" ] you will get both classes!

classList : List ( String, Bool ) -> Element msg -> Element 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. For example, maybe we want a way to view notices:

viewNotice : Notice -> Html msg
viewNotice notice =
    Element.div
        |> Element.classList
            [ ( "notice", True )
            , ( "notice-important", notice.isImportant )
            , ( "notice-seen", notice.isSeen )
            ]
        |> Element.text notice.content

Note: You can have as many class and classList attributes as you want. They all get applied, so if you say [ class "notice", class "notice-seen" ] you will get both classes!

id : String -> Element msg -> Element msg

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

title : String -> Element msg -> Element msg

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

hidden : Bool -> Element msg -> Element msg

Indicates the relevance of an element.

Inputs

type_ : String -> Element msg -> Element msg

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

value : String -> Element msg -> Element msg

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

checked : Bool -> Element msg -> Element msg

Indicates whether an input of type checkbox is checked.

placeholder : String -> Element msg -> Element msg

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

selected : Bool -> Element msg -> Element msg

Defines which option will be selected on page load.

Input Helpers

accept : String -> Element msg -> Element msg

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

acceptCharset : String -> Element msg -> Element msg

List of supported charsets in a form.

action : String -> Element msg -> Element msg

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

autocomplete : Bool -> Element msg -> Element msg

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

autofocus : Bool -> Element msg -> Element msg

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

disabled : Bool -> Element msg -> Element msg

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

enctype : String -> Element msg -> Element 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.

list : String -> Element msg -> Element 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 : Int -> Element msg -> Element msg

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

minlength : Int -> Element msg -> Element msg

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

method : String -> Element msg -> Element msg

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

multiple : Bool -> Element msg -> Element 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 : String -> Element msg -> Element msg

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

novalidate : Bool -> Element msg -> Element msg

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

pattern : String -> Element msg -> Element msg

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

readonly : Bool -> Element msg -> Element msg

Indicates whether an input or textarea can be edited.

required : Bool -> Element msg -> Element msg

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

size : Int -> Element msg -> Element 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 : String -> Element msg -> Element msg

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

form : String -> Element msg -> Element msg

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

Input Ranges

max : String -> Element msg -> Element 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 : String -> Element msg -> Element 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 : String -> Element msg -> Element msg

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

Input Text Areas

cols : Int -> Element msg -> Element msg

Defines the number of columns in a textarea.

rows : Int -> Element msg -> Element msg

Defines the number of rows in a textarea.

wrap : String -> Element msg -> Element msg

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

Links and Areas

href : String -> Element msg -> Element msg

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

target : String -> Element msg -> Element 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 : String -> Element msg -> Element msg

Indicates that clicking an a and area will download the resource directly. The String argument determins the name of the downloaded file. Say the file you are serving is named hats.json.

download "" -- hats.json


download "my-hats.json" -- my-hats.json


download "snakes.json" -- snakes.json

The empty String says to just name it whatever it was called on the server.

downloadAs : String -> Element msg -> Element msg

Indicates that clicking an a and area will download the resource directly, and that the downloaded resource with have the given filename. So downloadAs "hats.json" means the person gets a file named hats.json.

hreflang : String -> Element msg -> Element msg

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

media : String -> Element msg -> Element msg

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

ping : String -> Element msg -> Element 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 : String -> Element msg -> Element msg

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

Maps

ismap : Bool -> Element msg -> Element msg

When an img is a descendant 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 : String -> Element msg -> Element 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 : String -> Element msg -> Element 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 : String -> Element msg -> Element 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.

Embedded Content

src : String -> Element msg -> Element msg

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

height : Int -> Element msg -> Element msg

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

width : Int -> Element msg -> Element msg

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

alt : String -> Element msg -> Element msg

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

Audio and Video

autoplay : Bool -> Element msg -> Element msg

The audio or video should play as soon as possible.

controls : Bool -> Element msg -> Element msg

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

loop : Bool -> Element msg -> Element msg

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

preload : String -> Element msg -> Element msg

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

poster : String -> Element msg -> Element msg

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

default : Bool -> Element msg -> Element msg

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

kind : String -> Element msg -> Element msg

Specifies the kind of text track.

srclang : String -> Element msg -> Element msg

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

iframes

sandbox : String -> Element msg -> Element msg

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

srcdoc : String -> Element msg -> Element 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.

Ordered Lists

reversed : Bool -> Element msg -> Element msg

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

start : Int -> Element msg -> Element msg

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

Tables

align : String -> Element msg -> Element msg

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

colspan : Int -> Element msg -> Element msg

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

rowspan : Int -> Element msg -> Element msg

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

headers : String -> Element msg -> Element msg

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

scope : String -> Element msg -> Element msg

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

Less Common Global Attributes

Attributes that can be attached to any HTML tag but are less commonly used.

accesskey : Char -> Element msg -> Element msg

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

contenteditable : Bool -> Element msg -> Element msg

Indicates whether the element's content is editable.

contextmenu : String -> Element msg -> Element msg

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

dir : String -> Element msg -> Element msg

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

draggable : String -> Element msg -> Element msg

Defines whether the element can be dragged.

dropzone : String -> Element msg -> Element msg

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

itemprop : String -> Element msg -> Element msg
lang : String -> Element msg -> Element msg

Defines the language used in the element.

spellcheck : Bool -> Element msg -> Element msg

Indicates whether spell checking is allowed for the element.

tabindex : Int -> Element msg -> Element msg

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

Miscellaneous

cite : String -> Element msg -> Element msg

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

datetime : String -> Element msg -> Element msg

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

pubdate : String -> Element msg -> Element msg

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

manifest : String -> Element msg -> Element msg

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