noredink-ui/styleguide-app/Examples/Table.elm
Jasper Woudenberg 56685a3019 Use new heading modules over standard h\d elements
The inclusion of reset.css file nuked the default browser styles for
headers. This change sees us using custom styled headers instead to
bring structure back to the styleguide pages.
2018-06-22 10:41:38 +01:00

103 lines
2.9 KiB
Elm

module Examples.Table exposing (Msg, State, example, init, update)
{- \
@docs Msg, State, example, init, update
-}
import Css exposing (..)
import Headings
import Html
import Html.Styled
import ModuleExample as ModuleExample exposing (Category(..), ModuleExample)
import Nri.Ui.Button.V2 as Button
import Nri.Ui.Table.V2 as Table
{-| -}
type Msg
= NoOp
{-| -}
type alias State =
()
{-| -}
example : (Msg -> msg) -> State -> ModuleExample msg
example parentMessage state =
{ filename = "Nri/Table.elm"
, category = Layout
, content =
let
columns =
[ Table.string
{ header = "First Name"
, value = .firstName
, width = calc (pct 50) minus (px 125)
}
, Table.string
{ header = "Last Name"
, value = .lastName
, width = calc (pct 50) minus (px 125)
}
, Table.custom
{ header =
Html.text "Actions"
|> Html.Styled.fromUnstyled
, width = px 250
, view =
\_ ->
Button.button
{ size = Button.Small
, style = Button.Primary
, onClick = NoOp
, width = Nothing
}
{ label = "Action"
, state = Button.Enabled
, icon = Nothing
}
|> Html.Styled.fromUnstyled
}
]
data =
[ { firstName = "First1", lastName = "Last1" }
, { firstName = "First2", lastName = "Last2" }
, { firstName = "First3", lastName = "Last3" }
, { firstName = "First4", lastName = "Last4" }
, { firstName = "First5", lastName = "Last5" }
]
in
[ Html.Styled.toUnstyled Table.keyframeStyles
, Headings.h4 [ Html.text "With header" ]
, Table.view columns data
|> Html.Styled.toUnstyled
, Headings.h4 [ Html.text "Without header" ]
, Table.viewWithoutHeader columns data
|> Html.Styled.toUnstyled
, Headings.h4 [ Html.text "Loading" ]
, Table.viewLoading columns
|> Html.Styled.toUnstyled
, Headings.h4 [ Html.text "Loading without header" ]
, Table.viewLoadingWithoutHeader columns
|> Html.Styled.toUnstyled
]
|> List.map (Html.map parentMessage)
}
{-| -}
init : State
init =
()
{-| -}
update : Msg -> State -> ( State, Cmd Msg )
update msg state =
case msg of
NoOp ->
( state, Cmd.none )