{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultilineStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Miso.UI.Sidebar
(
SidebarProps (..)
, defaultSidebarProps
, sidebar_
, sidebarGroup_
, sidebarNav_
, sidebarItem_
, sidebarCodeSample
, sidebarPropsApi
) where
import Miso
import qualified Miso.Html.Element as H
import qualified Miso.Html.Property as P
data action
=
{ :: MisoString
, :: Bool
, :: [MisoString]
, :: [Attribute action]
}
defaultSidebarProps :: SidebarProps action
= SidebarProps
{ sidebarId :: MisoString
sidebarId = MisoString
"sidebar"
, sidebarOpen :: Bool
sidebarOpen = Bool
True
, sidebarClasses :: [MisoString]
sidebarClasses = []
, sidebarAttrs :: [Attribute action]
sidebarAttrs = []
}
sidebar_
:: SidebarProps action
-> [View model action]
-> View model action
SidebarProps {Bool
[MisoString]
[Attribute action]
MisoString
sidebarId :: forall action. SidebarProps action -> MisoString
sidebarOpen :: forall action. SidebarProps action -> Bool
sidebarClasses :: forall action. SidebarProps action -> [MisoString]
sidebarAttrs :: forall action. SidebarProps action -> [Attribute action]
sidebarId :: MisoString
sidebarOpen :: Bool
sidebarClasses :: [MisoString]
sidebarAttrs :: [Attribute action]
..} [View model action]
kids =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.aside_
( [[Attribute action]] -> [Attribute action]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
[ [ [MisoString] -> Attribute action
forall action. [MisoString] -> Attribute action
P.classes_ (MisoString
"sidebar" MisoString -> [MisoString] -> [MisoString]
forall a. a -> [a] -> [a]
: [MisoString]
sidebarClasses)
, MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.id_ MisoString
sidebarId
, MisoString -> MisoString -> Attribute action
forall action. MisoString -> MisoString -> Attribute action
P.aria_ MisoString
"hidden" (if Bool
sidebarOpen then MisoString
"false" else MisoString
"true")
]
, [Attribute action]
sidebarAttrs
]
)
[ [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.nav_ [] [View model action]
kids ]
sidebarGroup_
:: MisoString
-> [View model action]
-> View model action
MisoString
heading [View model action]
kids =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.section_
[ MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.class_ MisoString
"scrollbar" ]
[ [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.h3_ [] [ MisoString -> View model action
forall model action. MisoString -> View model action
text MisoString
heading ]
, [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
sidebarNav_ [] [View model action]
kids
]
sidebarNav_
:: [Attribute action]
-> [View model action]
-> View model action
[Attribute action]
attrs [View model action]
kids =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.ul_ [Attribute action]
attrs [ [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.li_ [] [ View model action
k ] | View model action
k <- [View model action]
kids ]
sidebarItem_
:: Bool
-> MisoString
-> [View model action]
-> View model action
Bool
current MisoString
url [View model action]
kids =
([Attribute action] -> [View model action] -> View model action)
-> [Attribute action]
-> Bool
-> [Attribute action]
-> [View model action]
-> View model action
forall action model.
([Attribute action] -> [View model action] -> View model action)
-> [Attribute action]
-> Bool
-> [Attribute action]
-> [View model action]
-> View model action
optionalAttrs
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.a_
[ MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.href_ MisoString
url ]
Bool
current
[ MisoString -> MisoString -> Attribute action
forall action. MisoString -> MisoString -> Attribute action
P.aria_ MisoString
"current" MisoString
"page" ]
[View model action]
kids
sidebarCodeSample :: View model action
=
View model action
"""
-----------------------------------------------------------------------------
module MySidebar (mySidebar) where
-----------------------------------------------------------------------------
import Miso
-----------------------------------------------------------------------------
import Miso.UI.Sidebar
-----------------------------------------------------------------------------
mySidebar :: View model action
mySidebar =
sidebar_ defaultSidebarProps
[ sidebarGroup_ "Getting Started"
[ sidebarItem_ True "#introduction" [ "Introduction" ]
, sidebarItem_ False "#installation" [ "Installation" ]
]
, sidebarGroup_ "Components"
[ sidebarItem_ False "#accordion" [ "Accordion" ]
, sidebarItem_ False "#button" [ "Button" ]
]
]
"""
sidebarPropsApi :: View model action
=
View model action
"""
-- | Props for 'sidebar_'
data SidebarProps action
= SidebarProps
{ sidebarId :: MisoString
, sidebarOpen :: Bool
-- ^ Visible (@aria-hidden@ when closed)
, sidebarClasses :: [MisoString]
-- ^ Extra classes appended to @aside.sidebar@
, sidebarAttrs :: [Attribute action]
}
-----------------------------------------------------------------------------
-- | Smart constructor: open sidebar
defaultSidebarProps :: SidebarProps action
defaultSidebarProps
= SidebarProps
{ sidebarId = "sidebar"
, sidebarOpen = True
, sidebarClasses = []
, sidebarAttrs = []
}
"""