Comments (2)
+1 for the feature!
from router.
While there is no out-of-the-box 'active' links highlighting, here is a small example how to implement that in the app: https://glitch.com/edit/#!/highlight-current-nav-link?path=views%2Fmain-layout.js%3A19%3A3
This demo shows a navigation menu and highlights the currently active link.
Generally, I see two approaches to implement this:
- add more properties into the existing router config and use it to render the menu
- create a separate (simpler) config for the navigation links, and render the menu based on that
This demo uses the latter. On every location change it iterates over the list of all navigation tabs until it finds the first that matches the current URL, and then selects that as the active item in the <vaadin-tabs>
container:
this.menuTabs = [
{route: '/', name: 'Home'},
{route: '/sam', name: 'User profile page'},
{route: '/gibberish/not/name', name: '404 page'},
];
const isCurrentLocation = route => router.urlForPath(route) === this.location.getUrl();
const index = this.menuTabs.findIndex((menuTab) => isCurrentLocation(menuTab.route));
Creating a separate list of {title, url}
records and explicitly listing all navigation links there is partially a duplication of the route config. But in practice that may be OK. Especially if the app has much more complex routing table than you want to render in the navigation menu.
Another way (not shown in the linked demo) would to be add extra properties into the route configuration. That means, for example, extending the Route
type with custom metadata like title
and canonicalUrl
, and rendering a navigation menu based on that. There is a discussion and an example of how to add custom meta to routes: #444
from router.
Related Issues (20)
- Vaadin router should follow standard navigation if it cannot find a route HOT 1
- is it possible to treat `#` as a normal character (and not a "hash" prefix) on a route
- Wrong timing for scrolling to the top when handling click
- Add issue templates
- How to use a link checker like Lychee with Vaadin Router wildcards
- Include types in package.json
- Router.go should find a route based on its defined path relative to the base href
- Please support search and hash strings in commands.redirect() as well
- router-ignore broken
- Distribute as not bundled library
- Enable native View Transition API HOT 2
- Different route animation behaviour depending on from/to routes
- Version Conflict difference between assemble and build packages.json HOT 1
- Router.go not working properly
- URL fragment navigation not working
- Broken link on github page
- Handling Client Side Routing When Hosting Vaadin Lit project on AWS S3
- Whole Page Refresh
- Failed to construct 'CustomElement': The result must not have attributes HOT 2
- onBeforeEnter not called after page refresh
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from router.