You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

109 lines
3.2 KiB

package outwatchapp
import monix.bio.Task
import outwatch._
import outwatch.dsl._
import outwatch.router.AppRouter
import outwatch.router._
import outwatch.router.dsl._
import Page._
object Router {
val router = AppRouter.create[Task, Page](NotFound) {
case Root => Home
case Root / "user" / IntVar(id) => UserHome(id)
case Root / "some-page" => SomePage
}
def apply(resolver: PartialFunction[Page, VDomModifier])(implicit
store: RouterStore[Page]
) = div(
htmlTag("nav")(
cls := "navbar navbar-expand-lg bg-primary ",
attr("color-on-scroll") := "100",
div(
cls := "container",
div(
cls := "navbar-translate",
a(
cls := "navbar-brand",
href := "#",
rel := "tooltip",
title := "",
attr("data-placement") := "bottom",
target := "_blank",
div("OutwatchApp")
),
button(
cls := "navbar-toggler navbar-toggler toggled collapsed",
attr("data-toggle") := "collapse",
attr("data-target") := "#navigation",
attr("aria-controls") := "navigation-index",
attr("aria-expanded") := "false",
attr("aria-label") := "Toggle navigation",
div(cls := "navbar-toggler-bar bar1"),
div(cls := "navbar-toggler-bar bar2"),
div(cls := "navbar-toggler-bar bar3")
)
),
div(
cls := "navbar-collapse justify-content-end collapse",
idAttr := "navigation",
div(
cls := "navbar-collapse-header",
div(
cls := "row",
div(
cls := "col-6 collapse-brand",
a("BLK•")
),
div(
cls := "col-6 collapse-close text-right",
button(
tpe := "button",
cls := "navbar-toggler collapsed",
attr("data-toggle") := "collapse",
attr("data-target") := "#navigation",
attr("aria-controls") := "navigation-index",
attr("aria-expanded") := "false",
attr("aria-label") := "Toggle navigation",
i(cls := "tim-icons icon-simple-remove")
)
)
)
),
ul(
cls := "navbar-nav",
li(
cls := "nav-item active",
router.link("/")(
cls := "nav-link",
"Home",
div(cls := "sr-only", "(current)")
)
),
li(
cls := "nav-item",
router
.link("/some-page")(cls := "nav-link", "SomePage")
),
li(
cls := "nav-item",
router.link("/user/1")(cls := "nav-link", "User Home")
),
li(
cls := "nav-item",
router.link("/todomvc")(cls := "nav-link", "TodoMvc")
)
)
)
)
),
div(
cls := "container",
router.render(resolver),
router.watch()
)
)
}