diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index 5ed2e1a..f070322 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -17,47 +17,11 @@ @JSExportTopLevel("app") object Main: - // Pull in the stylesheet - val css: Css.type = Css - @JSExport def main(args: Array[String]): Unit = { - val appContainer = dom.document.querySelector("#app") - val $time = EventStream.periodic(1000).mapTo(new Date().toTimeString) - val appElement: Div = div( - h1("Hello"), - "Current time is: ", - b(child.text <-- $time) - ) - // TODO: pages by logged in user - val pages = Var(List(Page.Dashboard, Page.Detail)) - // TODO: page routing - val currentPage = Var(Page.Dashboard) - val logo = Navigation.Logo( - "Workflow", - "https://tailwindui.com/img/logos/workflow-mark-indigo-300.svg" - ) - - // TODO: load user profile - val userProfile = Var( - UserProfile( - "Tom Cook", - "tom@example.com", - "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" - ) - ) - - // TODO: menu items by user profile - val userMenu = Var( - List( - Navigation.MenuItem("Your Profile"), - Navigation.MenuItem("Settings"), - Navigation.MenuItem("Sign out") - ) - ) - - val root: RootNode = - render( + documentEvents.onDomContentLoaded.foreach { _ => + val appContainer = dom.document.querySelector("#app") + val _ = render( appContainer, Layout( logo, @@ -68,4 +32,44 @@ appElement ) ) + }(unsafeWindowOwner) } + + val $time = EventStream.periodic(1000).mapTo(new Date().toTimeString) + + def appElement: Div = div( + h1("Hello"), + "Current time is: ", + b(child.text <-- $time) + ) + + // TODO: pages by logged in user + val pages = Var(List(Page.Dashboard, Page.Detail)) + // TODO: page routing + val currentPage = Var(Page.Dashboard) + + val logo = Navigation.Logo( + "Workflow", + "https://tailwindui.com/img/logos/workflow-mark-indigo-300.svg" + ) + + // TODO: load user profile + val userProfile = Var( + UserProfile( + "Tom Cook", + "tom@example.com", + "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" + ) + ) + + // TODO: menu items by user profile + val userMenu = Var( + List( + Navigation.MenuItem("Your Profile"), + Navigation.MenuItem("Settings"), + Navigation.MenuItem("Sign out") + ) + ) + + // Pull in the stylesheet + val css: Css.type = Css diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index 5ed2e1a..f070322 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -17,47 +17,11 @@ @JSExportTopLevel("app") object Main: - // Pull in the stylesheet - val css: Css.type = Css - @JSExport def main(args: Array[String]): Unit = { - val appContainer = dom.document.querySelector("#app") - val $time = EventStream.periodic(1000).mapTo(new Date().toTimeString) - val appElement: Div = div( - h1("Hello"), - "Current time is: ", - b(child.text <-- $time) - ) - // TODO: pages by logged in user - val pages = Var(List(Page.Dashboard, Page.Detail)) - // TODO: page routing - val currentPage = Var(Page.Dashboard) - val logo = Navigation.Logo( - "Workflow", - "https://tailwindui.com/img/logos/workflow-mark-indigo-300.svg" - ) - - // TODO: load user profile - val userProfile = Var( - UserProfile( - "Tom Cook", - "tom@example.com", - "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" - ) - ) - - // TODO: menu items by user profile - val userMenu = Var( - List( - Navigation.MenuItem("Your Profile"), - Navigation.MenuItem("Settings"), - Navigation.MenuItem("Sign out") - ) - ) - - val root: RootNode = - render( + documentEvents.onDomContentLoaded.foreach { _ => + val appContainer = dom.document.querySelector("#app") + val _ = render( appContainer, Layout( logo, @@ -68,4 +32,44 @@ appElement ) ) + }(unsafeWindowOwner) } + + val $time = EventStream.periodic(1000).mapTo(new Date().toTimeString) + + def appElement: Div = div( + h1("Hello"), + "Current time is: ", + b(child.text <-- $time) + ) + + // TODO: pages by logged in user + val pages = Var(List(Page.Dashboard, Page.Detail)) + // TODO: page routing + val currentPage = Var(Page.Dashboard) + + val logo = Navigation.Logo( + "Workflow", + "https://tailwindui.com/img/logos/workflow-mark-indigo-300.svg" + ) + + // TODO: load user profile + val userProfile = Var( + UserProfile( + "Tom Cook", + "tom@example.com", + "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" + ) + ) + + // TODO: menu items by user profile + val userMenu = Var( + List( + Navigation.MenuItem("Your Profile"), + Navigation.MenuItem("Settings"), + Navigation.MenuItem("Sign out") + ) + ) + + // Pull in the stylesheet + val css: Css.type = Css diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala index 4a56b61..9f5ffa4 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala @@ -105,7 +105,7 @@ aria.orientation := "vertical", aria.labelledBy := "user-menu-button", tabIndex := -1, - // SOMEDAY: keyboard navigation + // : keyboard navigation children <-- userMenu.map(_.zipWithIndex.map(menuItem)) ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index 5ed2e1a..f070322 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -17,47 +17,11 @@ @JSExportTopLevel("app") object Main: - // Pull in the stylesheet - val css: Css.type = Css - @JSExport def main(args: Array[String]): Unit = { - val appContainer = dom.document.querySelector("#app") - val $time = EventStream.periodic(1000).mapTo(new Date().toTimeString) - val appElement: Div = div( - h1("Hello"), - "Current time is: ", - b(child.text <-- $time) - ) - // TODO: pages by logged in user - val pages = Var(List(Page.Dashboard, Page.Detail)) - // TODO: page routing - val currentPage = Var(Page.Dashboard) - val logo = Navigation.Logo( - "Workflow", - "https://tailwindui.com/img/logos/workflow-mark-indigo-300.svg" - ) - - // TODO: load user profile - val userProfile = Var( - UserProfile( - "Tom Cook", - "tom@example.com", - "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" - ) - ) - - // TODO: menu items by user profile - val userMenu = Var( - List( - Navigation.MenuItem("Your Profile"), - Navigation.MenuItem("Settings"), - Navigation.MenuItem("Sign out") - ) - ) - - val root: RootNode = - render( + documentEvents.onDomContentLoaded.foreach { _ => + val appContainer = dom.document.querySelector("#app") + val _ = render( appContainer, Layout( logo, @@ -68,4 +32,44 @@ appElement ) ) + }(unsafeWindowOwner) } + + val $time = EventStream.periodic(1000).mapTo(new Date().toTimeString) + + def appElement: Div = div( + h1("Hello"), + "Current time is: ", + b(child.text <-- $time) + ) + + // TODO: pages by logged in user + val pages = Var(List(Page.Dashboard, Page.Detail)) + // TODO: page routing + val currentPage = Var(Page.Dashboard) + + val logo = Navigation.Logo( + "Workflow", + "https://tailwindui.com/img/logos/workflow-mark-indigo-300.svg" + ) + + // TODO: load user profile + val userProfile = Var( + UserProfile( + "Tom Cook", + "tom@example.com", + "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" + ) + ) + + // TODO: menu items by user profile + val userMenu = Var( + List( + Navigation.MenuItem("Your Profile"), + Navigation.MenuItem("Settings"), + Navigation.MenuItem("Sign out") + ) + ) + + // Pull in the stylesheet + val css: Css.type = Css diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala index 4a56b61..9f5ffa4 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/components/Navigation.scala @@ -105,7 +105,7 @@ aria.orientation := "vertical", aria.labelledBy := "user-menu-button", tabIndex := -1, - // SOMEDAY: keyboard navigation + // : keyboard navigation children <-- userMenu.map(_.zipWithIndex.map(menuItem)) ) ) diff --git a/build.sbt b/build.sbt index 2159dd3..b80cd92 100644 --- a/build.sbt +++ b/build.sbt @@ -6,7 +6,18 @@ lazy val app = (project in file("app")) .enablePlugins(ScalaJSPlugin) - .settings(IWDeps.useZIO(Test), IWDeps.laminar) + .settings( + IWDeps.useZIO(Test), + IWDeps.laminar, + libraryDependencies ++= Seq( + "com.raquo" %%% "waypoint" % "0.5.0", + "be.doeraene" %%% "url-dsl" % "0.4.0", + "io.laminext" %%% "core" % IWVersions.laminar, + "io.laminext" %%% "ui" % IWVersions.laminar, + "io.laminext" %%% "tailwind" % IWVersions.laminar, + "io.laminext" %%% "validation-core" % IWVersions.laminar + ) + ) .settings( scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.ESModule) }, scalaJSLinkerConfig ~= {