diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java b/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java index 2aee7e1..ddf9353 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java +++ b/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java @@ -202,13 +202,16 @@ public void showRouterLayoutContent(HasElement content) { } Optional.ofNullable(demo.getClass().getAnnotation(Route.class)) - .map(route -> route.value().replaceFirst("^/+", "")) + .map(route -> route.value().replaceFirst("^/+", "").replaceFirst("^[0-9]", "_$0")) .filter(Predicate.not(String::isEmpty)).ifPresent(route -> { StringBuilder prefix = new StringBuilder(); for (String segment : route.split("/+")) { - prefix.append(segment); - demo.addClassName(prefix.toString()); - prefix.append('-'); + segment = segment.replaceAll("[^a-zA-Z0-9_-]+", "-").replaceAll("^-+|-+$", ""); + if (!segment.isEmpty()) { + prefix.append(segment); + demo.addClassName(prefix.toString()); + prefix.append('-'); + } } });