Skip to content

dimassrio/nebula-routing

 
 

Repository files navigation

Published on webcomponents.org Polymer Version Sauce Labs Build Status Gitter Chat Become a Patreon

<nebula-routing>

Web components for declarative client-side routing.

  • Parses the browser window.location for pathname and search query parameters
  • Pattern matching supports named parameters, optional sections and wildcards
  • Updates the browser URL on the client using the History API
  • Supports using parameters to interpolate URL changes
  • Can intercept anchor links and resolve on the client

Installation

$ bower install -S arsnebula/nebula-routing

Getting Started

Import the package.

<link rel="import" href="/bower_components/nebula-routing/nebula-routing.html">

Add the routing elements. The <nebula-intercept> element can intercept clicks on anchor elements that have an href that targets the local origin. Typically, you will add a single instance to your top-level application element, or the HTML body element.

<nebula-intercept></nebula-intercept>

The <nebula-location> element parses the window location and provides route information including pathnanme, query parameters, and the current hash. The <nebula-route> element is used to match a route path to a specified pattern.

<nebula-location
  data="{{location}}">
</nebula-location>

<nebula-route
  id="route"
  path="[[location.pathname]]"
  pattern="/:page(/)(/*)"
  data="{{route}}">
</nebula-route>

Use something like iron-pages to perform conditional rendering of page elements:

<iron-pages selected="{{route.page}}" attr-for-selected="name">
  <div name="test1">Test 1</div>
  <div name="test2">Test 2</div>
</iron-pages>

Use the redirect method to change the route based on a new path, or parameter:

this.$.route.redirect('/test2'})
this.$.route.redirect({page: 'test2'})

To perform a replaceState rather than pushState, set the optional replace parameter to true.

this.$.route.redirect('/test2'}, true)
this.$.route.redirect({page: 'test2'}, true)

For more information, see the API documentation.

Contributing

We welcome and appreciate feedback from the community. Here are a few ways that you can show your appreciation for this package:

  • Give us a Star on GitHub from either webcomponents.org or directly on GitHub.

  • Submit a feature request, or a defect report on the Issues List.

  • Become a Patreon. It takes a lot of time and effort to develop, document, test and support the elements in our Nebula Essentials collection. Your financial contribution will help ensure that our entire collection continues to grow and improve.

If you are a developer, and are interested in making a code contribution, consider opening an issue first to describe the change, and discuss with the core repository maintainers. Once you are ready, prepare a pull request:

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Change Log

See CHANGELOG

License

See LICENSE

About

Declarative client-side routing.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 94.9%
  • JavaScript 5.1%