Erweiterungen
This commit is contained in:
@@ -25,6 +25,7 @@ import de.assecutor.votianlt.model.UserInvoiceData;
|
||||
import de.assecutor.votianlt.pages.service.UserInvoiceDataService;
|
||||
import de.assecutor.votianlt.pages.view.EditProfileView;
|
||||
import de.assecutor.votianlt.security.SecurityService;
|
||||
import de.assecutor.votianlt.service.MessageService;
|
||||
|
||||
import static com.vaadin.flow.theme.lumo.LumoUtility.*;
|
||||
|
||||
@@ -35,13 +36,15 @@ public final class MainLayout extends AppLayout {
|
||||
|
||||
private final SecurityService securityService;
|
||||
private final UserInvoiceDataService userInvoiceDataService;
|
||||
private final MessageService messageService;
|
||||
private Div headerRef;
|
||||
private Scroller navRef;
|
||||
private Component userMenuRef;
|
||||
|
||||
public MainLayout(SecurityService securityService, UserInvoiceDataService userInvoiceDataService) {
|
||||
public MainLayout(SecurityService securityService, UserInvoiceDataService userInvoiceDataService, MessageService messageService) {
|
||||
this.securityService = securityService;
|
||||
this.userInvoiceDataService = userInvoiceDataService;
|
||||
this.messageService = messageService;
|
||||
setPrimarySection(Section.DRAWER);
|
||||
|
||||
// Always build the drawer; keep references and toggle visibility on attach and
|
||||
@@ -148,11 +151,38 @@ public final class MainLayout extends AppLayout {
|
||||
}
|
||||
|
||||
private SideNavItem createSideNavItem(MenuEntry menuEntry) {
|
||||
SideNavItem item;
|
||||
if (menuEntry.icon() != null) {
|
||||
return new SideNavItem(menuEntry.title(), menuEntry.path(), new Icon(menuEntry.icon()));
|
||||
item = new SideNavItem(menuEntry.title(), menuEntry.path(), new Icon(menuEntry.icon()));
|
||||
} else {
|
||||
return new SideNavItem(menuEntry.title(), menuEntry.path());
|
||||
item = new SideNavItem(menuEntry.title(), menuEntry.path());
|
||||
}
|
||||
|
||||
// Add badge for "Nachrichten" menu item showing unread message count
|
||||
if ("Nachrichten".equals(menuEntry.title())) {
|
||||
try {
|
||||
// Test: Show badge with 10 unread messages
|
||||
long unreadCount = 10;
|
||||
|
||||
// Create blue badge with white text (same color as UserMessagesView)
|
||||
Span badge = new Span(String.valueOf(unreadCount));
|
||||
badge.getElement().getThemeList().add("badge");
|
||||
badge.getStyle().set("background-color", "var(--lumo-primary-color)");
|
||||
badge.getStyle().set("color", "#ffffff");
|
||||
badge.getStyle().set("border-radius", "12px");
|
||||
badge.getStyle().set("padding", "2px 8px");
|
||||
badge.getStyle().set("font-size", "12px");
|
||||
badge.getStyle().set("font-weight", "bold");
|
||||
badge.getStyle().set("min-width", "20px");
|
||||
badge.getStyle().set("text-align", "center");
|
||||
|
||||
item.setSuffixComponent(badge);
|
||||
} catch (Exception e) {
|
||||
// If there's an error, just don't show the badge
|
||||
}
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
private Component createUserMenu() {
|
||||
|
||||
Reference in New Issue
Block a user