NliMenuLib
The general structure of component: for toolbar menu:
<nli-menu [firstLineText]="" [secoundLineText]="">
<nli-menu-item [icon]="" [text]="" [disabled]="" (itemClick)="" iconPath="" ></nli-menu-item>
<nli-menu-item [icon]="" [text]="" [disabled]="" (itemClick)="" iconPath=""></nli-menu-item>
...
</nli-menu>
and for normal menu:
<nli-menu [isToolbarMenu]="false" [placeHolder]="">
<nli-menu-item [icon]="" [text]="" [disabled]="" (itemClick)="" iconPath="" ></nli-menu-item>
<nli-menu-item [icon]="" [text]="" [disabled]="" (itemClick)="" iconPath=""></nli-menu-item>
...
</nli-menu>
Parts
nli-menu: main part of component including:
firstLineText and secoundLineText:sholud set and will show when isToolbarMenu is true and show as menu placeholder text.
isToolbarMenu:is the type of menu.set to false for normal menu and true for toolbar menu. this value is true by default.
placeHolder:set when type is "normal menu" and will shown when nothing selected.and only used when isToolbarMenu is false.
The whole part of component is clickable.
nli-menu-item: Specify drop-down items:
icon (input): unique name of the icon.
iconPath (input): the path to SVG format icon file.
text (input): item text.
disabled (output): disable item.
itemClick (output): handle item click event.
Setup Steps:
-
Add dependency in package.json under dependencies object:
"nli-menu-lib": "^0.1.4"
-
Add CSS dependencies to main html file which by default is index.html:
<head>
...
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic"
type="text/css" rel="stylesheet">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
...
</head>
This component uses material fonts and icons and bootstrap CSS for responsive behavior.
-
Apply material theme. create
app-theme.scss
file and apply material theme. You should also add style dependency in.angular-cli.json
file:"styles": [ ... "app-theme.scss" ],
The sample app-theme.scss exists at the end of this file.
-
Run npm install in project folder (The home folder that
package.json
exists):npm install
This command downloads all dependencies including nli-menu-lib. You can also download just this module with:npm install nli-menu-lib
-
Import menu module to your project. In your main module (or module that you want use this component) that its default name is
app.module.ts
, import it:import { LibModule as NliMenuModule} from 'nli-menu-lib'; ... @NgModule({ ... imports: [ ... NliMenuModule ] ... });
Usage example:
<div >
<nli-menu [firstLineText]="'Max Mustermann'" [secoundLineText]="'SW Musterstadt'">
<nli-menu-item [icon]="'profile'" [text]="'Profil bearbeiten'" iconPath="../assets/home/account-outline.svg" ></nli-menu-item>
<nli-menu-item [icon]="'password'" [text]="'Passwort ändern'" iconPath="../assets/home/lock-outline.svg"></nli-menu-item>
<nli-menu-item [icon]="'client'" [text]="'Mandant wechseln'" (click)="onClickClient()" iconPath="../assets/home/autorenew.svg"></nli-menu-item>
<nli-menu-item [icon]="'logout'" [text]="'Ausloggen'" (click)="onClickLogout()" iconPath="../assets/home/logout.svg"></nli-menu-item>
</nli-menu>
</div>
##Appendix
-
Sample
app-theme.scss
@import '~@angular/material/theming'; // Plus imports for other components in your app. // Include the base styles for Angular Material core. We include this here so that you only // have to load a single css file for Angular Material in your app. @include mat-core(); // Define the palettes for your theme using the Material Design palettes available in palette.scss // (imported above). For each palette, you can optionally specify a default, lighter, and darker // hue. $app-primary: mat-palette($mat-blue); $app-secondary: mat-palette($mat-blue); $app-accent: mat-palette($mat-orange, A200, A100, A400); // The warn palette is optional (defaults to red). $app-warn: mat-palette($mat-red); // Create the theme object (a Sass map containing all of the palettes). $app-theme: mat-light-theme($app-primary, $app-accent, $app-warn); // Include theme styles for core and each component used in your app. // Alternatively, you can import and @include the theme mixins for each component // that you are using. @include angular-material-theme($app-theme); //add this line for importing menu scss theme: @import '~@next-level-integration/nli-menu-lib/lib/menu/item/item.component.scss'; @include nli-material-theme($app-theme);