nixCodeX/elm-bootstrap/3.1.0

NOTE: the latest version is 3.1.1

Renamed to aDifferentJT/elm-bootstrap. That is where the repository lives now. It has not been published as a package under the new name.

Versions published as nixCodeX/elm-bootstrap still install under that name. 13 versions of 13 come from the new location (see their notes).

Rerouted (renamed, verified). The GitHub user or repository was renamed. The tag is still there, at the new name. The Lamdera package server serves a copy recovered from https://github.com/aDifferentJT/elm-bootstrap.

What we checked: The repo moved to github.com/aDifferentJT/elm-bootstrap. Rebuilt with git archive from commit dd82b25f7452 of https://github.com/aDifferentJT/elm-bootstrap (zip prefix nixCodeX-elm-bootstrap-dd82b25/, America/Los_Angeles times): the zip is byte-identical to the one package.elm-lang.org recorded, SHA-1 69243a1ee99ee0a01442c418a60f2f997e42c876.

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/nixCodeX/elm-bootstrap/zipball/3.1.0/

Bootstrap.Accordion

An accordion is a group of stacked cards where you can toggle the visibility (slide up/down) of each card

type alias Model =
    { accordionState = Accordion.state }




init : (Model, Cmd Msg)
init =
    ( { accordionState = Accordion.initialState }, Cmd.none )




type Msg
    = AccordionMsg Accordion.State




update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        AccordionMsg state ->
            ( { model | accordionState = state }
            , Cmd.none
            )




view : Model -> Html Msg
view model =
    Accordion.config AccordionMsg
        |> Accordion.withAnimation
        |> Accordion.cards
            [ Accordion.card
                { id = "card1"
                , options = []
                , header =
                    Accordion.header [] <| Accordion.toggle [] [ text "Card 1" ]
                , blocks =
                    [ Accordion.block []
                        [ Block.text [] [ text "Lorem ipsum etc" ] ]
                    ]
                }
            , Accordion.card
                { id = "card2"
                , options = []
                , header =
                    Accordion.header [] <| Accordion.toggle [] [ text "Card 2" ]
                , blocks =
                    [ Accordion.block []
                        [ Block.text [] [ text "Lorem ipsum etc" ] ]
                    ]
                }
            ]
        |> Accordion.view model.accordionState




-- You need to do this wiring when you use animations !


subscriptions : Model -> Sub Msg
subscriptions model =
    Accordion.subscriptions model.accordionState AccordionMsg

Accordion

view : State -> Config msg -> Html msg

Create an interactive accordion element

Accordion.config AccordionMsg
    |> Accordion.withAnimation
    |> Accordion.cards
        [ cardOne model -- view function to create a card
        , cardTwo model
        ]
    |> Accordion.view model.accordionState
  • state The current view state
  • config The configuration for the display of the accordion
config : (State -> msg) -> Config msg

Creates an initial/default view configuration for an accordion.

cards : List (Card msg) -> Config msg -> Config msg

Define the cards that your accordion should consist of

Set option for using animations for sliding card contents up/down.

Note: You must remember to hook up the subscriptions function when using this option.

Set option for only allowing one (or zero) open cards at any one time.

Set option for allowing contents of a card to overflow the card itself (useful for dropdowns)

isOpen : String -> State -> Bool

Check if given card is open/expanded (or when animating, on it's way to become open/expanded).

NOTE: If you give a non-existing id it will return False (:

type Config msg

Opaque type that defines the view configuration information of your accordion

  • You create an initial configuration by calling the config function
  • The withAnimtion function allows you to define that the contents of cards should animate up/down
  • The cards function defines the List of cards to be displayed

Initial state for the accordion. Typically used from your main init function

Initial state with card that matches given id expanded.

type State

Opaque representation of the view state for the accordion

Contents

{ id : String
, options : List (Option msg)
, blocks : List (CardBlock msg)
, header : Header msg
}
-> Card msg

Creates a card item for use in an accordion

  • card config record
    • id Unique id for your card
    • options List of card styling options
    • header Card header containing a toggle to hide/show the details of a card
    • blocks The main content elements of the card
block : List (Option msg) -> List (Item msg) -> CardBlock msg

Create a block element for use in an accordion card.

Accordion.block []
    [ Block.text [] [ text "Just some text" ] ]
  • blockOptions List of block options
  • blockItems List of block items
listGroup : List (Item msg) -> CardBlock msg

Create a List Group element for use in an accordion. List groups are block elements just like block

Accordion.listGroup
    [ ListGroup.li [] [ text "Item 1" ]
    , ListGroup.li [] [ text "Item 2" ]
    ]
  • items List of List group items
toggle : List (Attribute msg) -> List (Html msg) -> Toggle msg

Creates a card toggle element used for toggling the display of the main content of your cards

  • attributes List of attributes
  • children List of child elements
headerH1 : List (Attribute msg) -> Toggle msg -> Header msg

Create an accordion card header but rather than a div, using a h1 element

headerH2 : List (Attribute msg) -> Toggle msg -> Header msg

Create an accordion card header but rather than a div, using a h2 element

headerH3 : List (Attribute msg) -> Toggle msg -> Header msg

Create an accordion card header but rather than a div, using a h3 element

headerH4 : List (Attribute msg) -> Toggle msg -> Header msg

Create an accordion card header but rather than a div, using a h4 element

headerH5 : List (Attribute msg) -> Toggle msg -> Header msg

Create an accordion card header but rather than a div, using a h5 element

headerH6 : List (Attribute msg) -> Toggle msg -> Header msg

Create an accordion card header but rather than a div, using a h6 element

appendHeader : List (Html msg) -> Header msg -> Header msg

Add elements after the toggle element in a accordion card header. Order matters if you're using both prependHeader and appendHeader. Specifically, it should be toggle |> appendHeader |> prependHeader.

prependHeader : List (Html msg) -> Header msg -> Header msg

Add elements before the toggle element in a accordion card header. Order matters if you're using both prependHeader and appendHeader. Specifically, it should be toggle |> appendHeader |> prependHeader.

type Card msg

Opaque representation of a card item

type alias CardBlock msg =
CardBlock msg

Opaque representation of a card block element

type Toggle msg

Opaque representation of toggle element for initiating slide up/down for a card

Animation

subscriptions : State -> (State -> msg) -> Sub msg

When using animations you must remember to call this function for your main subscriptions function

subscriptions : Model -> Sub Msg
subscriptions model =
    Accordion.subscriptions model.accordionState AccordionMsg
  • state The current view state of the accordion
  • toMsg Message constructor function that is used to step the view state forward