aforemny/material-components-web-elm/6.0.0

NOTE: the latest version is 9.1.0

Rerouted (regenerated, verified). Same repository and tag, but GitHub now builds the zip with different bytes, so it no longer matches the SHA-1 package.elm-lang.org recorded. The Lamdera package server serves a copy recovered from https://github.com/aforemny/material-components-web-elm.

What we checked: Tag 6.0.0 is still on github.com/aforemny/material-components-web-elm; its commit fa5f16f0eddc is from 2020-10-08 13:01 UTC, before the version was published (2020-10-08 13:03 UTC); every file Elm uses matches a copy in a Lamdera package cache from 2021-02-13, from before the change; elm.json is byte-identical to package.elm-lang.org's; the exposed modules match docs.json; the zip's SHA-1 is not the published one (GitHub's zip no longer comes out byte for byte the same), so the contents were checked instead.

The Lamdera compiler uses this copy and prints a one-line notice saying so. elm itself fails to download this version.

Details · package.elm-lang.org's zip: https://github.com/aforemny/material-components-web-elm/zipball/6.0.0/

Material.Select

Select provides a single-option select menus.

This module concerns the container select. If you are looking for information about select options, refer to Material.Select.Item.

Table of Contents

Resources

Basic Usage

import Material.Select as Select
import Material.Select.Item as SelectItem


type Msg
    = ValueChanged String


main =
    Select.filled
        (Select.config
            |> Select.setLabel (Just "Fruit")
            |> Select.setSelected (Just "")
            |> Select.setOnChange ValueChanged
        )
        (SelectItem.selectItem
            (SelectItem.config { value = "" })
            [ text "" ]
        )
        [ SelectItem.selectItem
            (SelectItem.config { value = "Apple" })
            [ text "Apple" ]
        ]

Configuration

type Config a msg

Configuration of a select

config : Config a msg

Default configuration of a select

Configuration Options

setOnChange : (a -> msg) -> Config a msg -> Config a msg

Specify a message when the user changes the select

setLabel : Maybe String -> Config a msg -> Config a msg

Specify a select's label

setSelected : Maybe a -> Config a msg -> Config a msg

Specify a select's selected value

setDisabled : Bool -> Config a msg -> Config a msg

Specify whether a select is disabled

Disabled selects cannot be interacted with an have no visual interaction effect.

setRequired : Bool -> Config a msg -> Config a msg

Specify whether a select is required

setValid : Bool -> Config a msg -> Config a msg

Specify whether a select is valid

setLeadingIcon : Maybe (Icon msg) -> Config a msg -> Config a msg

Specify a select's leading icon

setAttributes : List (Attribute msg) -> Config a msg -> Config a msg

Specify additional attributes

Filled Select

Config a msg
-> SelectItem a msg
-> List (SelectItem a msg)
-> Html msg

Filled select view function

Outlined Select

Instead of a filled select, you may choose a select with a outline by using the outlined view function.

Select.outlined Select.config
    (SelectItem.selectItem
        (SelectItem.config { value = "" })
        [ text "" ]
    )
    [ SelectItem.selectItem
        (SelectItem.config { value = "Apple" })
        [ text "Apple" ]
    ]
Config a msg
-> SelectItem a msg
-> List (SelectItem a msg)
-> Html msg

Outlined select view function

Disabled Select

To disable a select, set its setDisabled configuration option to True.

Select.filled (Select.config |> Select.setDisabled True)
    (SelectItem.selectItem (SelectItem.config { value = "" })
        [ text "" ]
    )
    []

Required Select

To mark a select as required, set its setRequired configuration option to True.

Select.filled (Select.config |> Select.setRequired True)
    (SelectItem.selectItem (SelectItem.config { value = "" })
        [ text "" ]
    )
    []

Select with Helper Text

TODO(select-with-helper-text)

-- import Select.HelperText as SelectHelperText
main =
    --Html.div []
    --    [ Select.filled Select.config
    --        (SelectItem.item
    --            (SelectItem.config { value = "" })
    --            [ text "" ]
    --        )
    --        [ SelectItem.item
    --            (SelectItem.config { value = "Apple" })
    --            [ text "" ]
    --        ]
    --    , SelectHelperText.helperText
    --        (SelectHelperText.config
    --            |> SelectHelperText.setValid False
    --            |> SelectHelperText.setPersistent True
    --        )
    --        [ text "Helper text" ]
    --    ]
    text "TODO"

Select with Leading Icon

To have a select display a leading icon, use its setLeadingIcon configuration option to specify a value of Icon.

This library natively supports Material Icons. However, you may also include SVG or custom icons such as FontAwesome.

See Material.Select.Icon for more information.

Select.filled
    (Select.config
        |> Select.setLeadingIcon
            (Just (SelectIcon.icon "favorite"))
    )
    (SelectItem.selectItem
        (SelectItem.config { value = "" })
        [ text "" ]
    )
    [ SelectItem.selectItem
        (SelectItem.config { value = "Apple" })
        [ text "Apple" ]
    ]

Focus a Select

You may programatically focus a select by assigning an id attribute to it and use Browser.Dom.focus.

Select.filled
    (Select.config
        |> Select.setAttributes
            [ Html.Attributes.id "my-select" ]
    )
    (SelectItem.selectItem
        (SelectItem.config { value = "" })
        [ text "" ]
    )
    [ SelectItem.selectItem
        (SelectItem.config { value = "Apple" })
        [ text "Apple" ]
    ]