{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultilineStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Miso.UI.Pagination
(
PaginationProps (..)
, defaultPaginationProps
, pagination_
, paginationLink_
, paginationPrevious_
, paginationNext_
, paginationEllipsis_
, paginationSample
, paginationCodeSample
, paginationPropsApi
) where
import Miso
import qualified Miso.Html.Element as H
import qualified Miso.Html.Property as P
import Miso.UI.Icons
data action
=
{ :: [MisoString]
, :: [Attribute action]
}
defaultPaginationProps :: PaginationProps action
= PaginationProps
{ paginationClasses :: [MisoString]
paginationClasses = []
, paginationAttrs :: [Attribute action]
paginationAttrs = []
}
pagination_
:: PaginationProps action
-> [View model action]
-> View model action
PaginationProps {[MisoString]
[Attribute action]
paginationClasses :: forall action. PaginationProps action -> [MisoString]
paginationAttrs :: forall action. PaginationProps action -> [Attribute action]
paginationClasses :: [MisoString]
paginationAttrs :: [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.nav_
( [MisoString] -> Attribute action
forall action. [MisoString] -> Attribute action
P.classes_ (MisoString
"mx-auto" MisoString -> [MisoString] -> [MisoString]
forall a. a -> [a] -> [a]
: MisoString
"flex" MisoString -> [MisoString] -> [MisoString]
forall a. a -> [a] -> [a]
: MisoString
"w-full" MisoString -> [MisoString] -> [MisoString]
forall a. a -> [a] -> [a]
: MisoString
"justify-center" MisoString -> [MisoString] -> [MisoString]
forall a. a -> [a] -> [a]
: [MisoString]
paginationClasses)
Attribute action -> [Attribute action] -> [Attribute action]
forall a. a -> [a] -> [a]
: MisoString -> MisoString -> Attribute action
forall action. MisoString -> MisoString -> Attribute action
P.aria_ MisoString
"label" MisoString
"pagination"
Attribute action -> [Attribute action] -> [Attribute action]
forall a. a -> [a] -> [a]
: MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.role_ MisoString
"navigation"
Attribute action -> [Attribute action] -> [Attribute action]
forall a. a -> [a] -> [a]
: [Attribute action]
paginationAttrs
)
[ [Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.ul_
[ MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.class_ MisoString
"flex flex-row items-center gap-1" ]
[View model action]
kids
]
paginationLink_
:: Bool
-> MisoString
-> [View model action]
-> View model action
Bool
current MisoString
url [View model action]
kids =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.li_ []
[ [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.classes_ [ if Bool
current then MisoString
"btn-outline" else MisoString
"btn-ghost", MisoString
"size-9" ]
, MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.href_ MisoString
url
] [View model action]
kids
]
paginationPrevious_ :: MisoString -> View model action
MisoString
url =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.li_ []
[ [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.class_ MisoString
"btn-ghost", MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.href_ MisoString
url ]
[ [Attribute action] -> View model action
forall action model. [Attribute action] -> View model action
chevronLeftIcon [], View model action
"Previous" ]
]
paginationNext_ :: MisoString -> View model action
MisoString
url =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.li_ []
[ [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.class_ MisoString
"btn-ghost", MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.href_ MisoString
url ]
[ View model action
"Next", [Attribute action] -> View model action
forall action model. [Attribute action] -> View model action
chevronRightIcon [] ]
]
paginationEllipsis_ :: MisoString -> View model action
MisoString
url =
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.li_ []
[ [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.class_ MisoString
"btn-icon-ghost", MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.href_ MisoString
url ]
[ [Attribute action] -> View model action
forall action model. [Attribute action] -> View model action
dotsIcon [] ]
]
paginationSample :: View model action
=
[Attribute action] -> [View model action] -> View model action
forall action model.
[Attribute action] -> [View model action] -> View model action
H.div_
[ MisoString -> Attribute action
forall action. MisoString -> Attribute action
P.class_ MisoString
"inline-flex" ]
[ PaginationProps action -> [View model action] -> View model action
forall action model.
PaginationProps action -> [View model action] -> View model action
pagination_ PaginationProps action
forall action. PaginationProps action
defaultPaginationProps
[ MisoString -> View model action
forall model action. MisoString -> View model action
paginationPrevious_ MisoString
"#"
, Bool -> MisoString -> [View model action] -> View model action
forall model action.
Bool -> MisoString -> [View model action] -> View model action
paginationLink_ Bool
False MisoString
"#" [ View model action
"1" ]
, Bool -> MisoString -> [View model action] -> View model action
forall model action.
Bool -> MisoString -> [View model action] -> View model action
paginationLink_ Bool
True MisoString
"#" [ View model action
"2" ]
, Bool -> MisoString -> [View model action] -> View model action
forall model action.
Bool -> MisoString -> [View model action] -> View model action
paginationLink_ Bool
False MisoString
"#" [ View model action
"3" ]
, MisoString -> View model action
forall model action. MisoString -> View model action
paginationEllipsis_ MisoString
"#"
, MisoString -> View model action
forall model action. MisoString -> View model action
paginationNext_ MisoString
"#"
]
]
paginationCodeSample :: View model action
=
View model action
"""
-----------------------------------------------------------------------------
module MyPagination (paginationSample) where
-----------------------------------------------------------------------------
import Miso
import qualified Miso.Html.Element as H
import qualified Miso.Html.Property as P
import Miso.UI.Icons
import Miso.UI.Pagination
-----------------------------------------------------------------------------
paginationSample :: View model action
paginationSample =
H.div_
[ P.class_ "inline-flex" ]
[ pagination_ defaultPaginationProps
[ paginationPrevious_ "#"
, paginationLink_ False "#" [ "1" ]
, paginationLink_ True "#" [ "2" ]
, paginationLink_ False "#" [ "3" ]
, paginationEllipsis_ "#"
, paginationNext_ "#"
]
]
"""
paginationPropsApi :: View model action
=
View model action
"""
-- | Props for 'pagination_'
data PaginationProps action
= PaginationProps
{ paginationClasses :: [MisoString]
-- ^ Extra classes appended to the @nav@
, paginationAttrs :: [Attribute action]
}
-----------------------------------------------------------------------------
-- | Smart constructor
defaultPaginationProps :: PaginationProps action
defaultPaginationProps
= PaginationProps
{ paginationClasses = []
, paginationAttrs = []
}
"""