nebula-routing
Declarative client-side routing.
[ This description is mirrored from README.md at github.com/arsnebula/nebula-routing on 2019-05-22 ]
<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:
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Change Log
See CHANGELOG
License
See LICENSE
Links
Compatibility
Was this helpful? Need more help?
Leave a comment or a question below. You can also join
the chat on Discord or
ask questions on StackOverflow.
Version
Dependencies
- polymer#Polymer/polymer#^2.0.0
- qs#nire0510/qs#^0.4.8
- url-pattern#snd/url-pattern#^1.0.1
- nebula-element-mixin#arsnebula/nebula-element-mixin#^2.0.0
- Released
- 2018-03-16
- Maturity
- IMPORTED
- License
- ISC License
Compatibility
- Framework
- Polymer 2.0+
- Polymer 1.0+ in 2.1.1
- Browser
- Browser Independent
nebula-routing - Vaadin Add-on Directory
Declarative client-side routing.GitHub Homepage
License
View on GitHub
nebula-routing version 1.0.0
### Dependencies
* polymer#Polymer/polymer#^1.7.1
* qs#^0.4.7
* url-pattern#^1.0.1
nebula-routing version 1.0.1
### Dependencies
* polymer#Polymer/polymer#^1.7.1
* qs#^0.4.7
* url-pattern#^1.0.1
nebula-routing version 1.0.2
### Dependencies
* polymer#Polymer/polymer#^1.7.1
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
nebula-routing version 1.0.3
### Dependencies
* polymer#Polymer/polymer#^1.7.1
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
nebula-routing version 1.1.0
### Dependencies
* polymer#Polymer/polymer#^1.7.1
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
nebula-routing version 1.1.1
### Dependencies
* polymer#Polymer/polymer#^1.7.1
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
nebula-routing version 1.1.2
### Dependencies
* polymer#Polymer/polymer#^1.7.1
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
nebula-routing version 2.0.0
### Dependencies
* polymer#Polymer/polymer#>=2.0.0-rc.1 <3.0
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
* nebula-element-mixin#arsnebula/nebula-element-mixin#^2.0.0
nebula-routing version 2.1.0
### Dependencies
* polymer#Polymer/polymer#>=2.0.0-rc.1 <3.0
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
* nebula-element-mixin#arsnebula/nebula-element-mixin#^2.0.0
nebula-routing version 2.1.1
### Dependencies
* polymer#Polymer/polymer#>=2.0.0-rc.1 <3.0
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
* nebula-element-mixin#arsnebula/nebula-element-mixin#^2.0.0
nebula-routing version 2.1.2
### Dependencies
* polymer#Polymer/polymer#^2.0.0
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
* nebula-element-mixin#arsnebula/nebula-element-mixin#^2.0.0
nebula-routing version 2.1.3
### Dependencies
* polymer#Polymer/polymer#^2.0.0
* qs#nire0510/qs#^0.4.8
* url-pattern#snd/url-pattern#^1.0.1
* nebula-element-mixin#arsnebula/nebula-element-mixin#^2.0.0