@luisli/menu-topbar-sidebar-test-lib
v1.0.0
Published
Reusable Angular menu library (sidebar + topbar)
Readme
Menu Library
A reusable Angular library for creating configurable sidebars and topbars following Domain-Driven Design (DDD) principles.
Features
- DDD Architecture: Organized into Domain, Application, Infrastructure, and Presentation layers.
- Design Patterns: Implements Factory Method, Strategy, and Adapter patterns.
- Configurable: Easily customize themes, layouts, and permissions.
- Extensible: Add new menu items, roles, and permissions dynamically.
- Standalone Components: Built with Angular standalone components for easy integration.
Installation
npm install menu-libUsage
Basic Setup
- Import the library in your
app.config.ts:
import { provideMenuLib } from 'menu-lib';
export const appConfig: ApplicationConfig = {
providers: [
provideMenuLib()
]
};- Use the components in your template:
<lib-sidebar [userPermissions]="userPermissions" [userRoles]="userRoles" theme="default"></lib-sidebar>
<lib-topbar [userPermissions]="userPermissions" [userRoles]="userRoles" theme="default"></lib-topbar>- Configure the menu in your component:
import { MenuService, MenuFactory, MenuItem } from 'menu-lib';
export class AppComponent implements OnInit {
userPermissions = ['read', 'write'];
userRoles = ['admin'];
constructor(private menuService: MenuService) {}
ngOnInit(): void {
const items = [
MenuItem.simple('home', 'Home', '/home', '🏠'),
MenuItem.simple('profile', 'Profile', '/profile', '👤', ['read'], ['admin'])
];
const menu = MenuFactory.createStaticMenu('main-menu', 'Main Menu', items);
this.menuService.setMenu(menu);
}
}Advanced Configuration
Using Adapters for Dynamic Configuration
import { MenuConfigService, JsonMenuAdapter } from 'menu-lib';
const jsonData = [
{ id: 'home', name: 'Home', url: '/home' },
{ id: 'settings', name: 'Settings', url: '/settings' }
];
const adapter = new JsonMenuAdapter(jsonData);
menuConfigService.setAdapter(adapter);Custom Themes
<lib-sidebar theme="dark"></lib-sidebar>Permission-Based Visibility
The library automatically filters menu items based on user permissions and roles.
API Reference
Components
SidebarComponent: Displays a vertical sidebar menu.TopbarComponent: Displays a horizontal topbar menu.
Services
MenuService: Manages the current menu state.PermissionService: Handles permission and role validation.MenuConfigService: Manages configuration adapters.
Factories
MenuFactory: Creates menu instances with different configurations.
Domain Objects
MenuItem: Represents a single menu item.Menu: Represents a collection of menu items.MenuConfig: Configuration for menu appearance and behavior.
Contributing
- Fork the repository.
- Create a feature branch.
- Make your changes.
- Run tests:
ng test menu-lib. - Build:
ng build menu-lib. - Submit a pull request.
License
MIT
