router


License

License

GroupId

GroupId

ba.sake
ArtifactId

ArtifactId

router_sjs1_2.13
Last Version

Last Version

0.0.3
Release Date

Release Date

Type

Type

jar
Description

Description

router
router
Project URL

Project URL

https://github.com/sake92/scalajs-router
Project Organization

Project Organization

ba.sake
Source Code Management

Source Code Management

https://github.com/sake92/scalajs-router

Download router_sjs1_2.13

How to add to project

<!-- https://jarcasting.com/artifacts/ba.sake/router_sjs1_2.13/ -->
<dependency>
    <groupId>ba.sake</groupId>
    <artifactId>router_sjs1_2.13</artifactId>
    <version>0.0.3</version>
</dependency>
// https://jarcasting.com/artifacts/ba.sake/router_sjs1_2.13/
implementation 'ba.sake:router_sjs1_2.13:0.0.3'
// https://jarcasting.com/artifacts/ba.sake/router_sjs1_2.13/
implementation ("ba.sake:router_sjs1_2.13:0.0.3")
'ba.sake:router_sjs1_2.13:jar:0.0.3'
<dependency org="ba.sake" name="router_sjs1_2.13" rev="0.0.3">
  <artifact name="router_sjs1_2.13" type="jar" />
</dependency>
@Grapes(
@Grab(group='ba.sake', module='router_sjs1_2.13', version='0.0.3')
)
libraryDependencies += "ba.sake" % "router_sjs1_2.13" % "0.0.3"
[ba.sake/router_sjs1_2.13 "0.0.3"]

Dependencies

compile (3)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.13.3
org.scala-js : scalajs-library_2.13 jar 1.0.1
org.scala-js : scalajs-dom_sjs1_2.13 jar 1.0.0

test (1)

Group / Artifact Type Version
org.scala-js : scalajs-test-bridge_2.13 jar 1.0.1

Project Modules

There are no modules declared in this project.

scalajs-router Maven Central Build Status

ScalaJS frontend router.

In your HTML add data-navigate attribute to nav elements:

<nav>
  <button data-navigate="/home">Home</button>
  <button data-navigate="/users/1">User details</button>
</nav>

Create element where router will show your dynamic content:

<div id="main"></div>

Then specify your routes and bind the router:

val routes: Router.Routes = {
  case "/home"    => HomeComponent
  case "/users/1" => UserDetailsComponent(1)
}

Router("main", routes, NotFoundComponent).init()

// components
object HomeComponent extends Component {
  def asElement: Element = ...
}
case class UserDetailsComponent(userId: Long) extends Component ..
object NotFoundComponent extends Component ..

You can attach a listener when a route changes:

Router().withListener {
  case "/active"    => // do something...
  case "/other"     => 
  case whateverElse => 
}.init()

With @Route macro you can simplify your routes matching to this:

@Route class HomeRoute(p1: "home")()
@Route class UserDetailsRoute(p1: "users", val userId: Long)()

val routes: Router.Routes = {
  case HomeRoute()              => HomeComponent
  case UserDetailsRoute(userId) => UserDetailsComponent(userId)
}

Versions

Version
0.0.3
0.0.2
0.0.1