Reputation: 453
rootPage: any = DashboardPage;
pages: Array<{ title: string, component: any, icon: any, color: any, iconcolor: any }>;
this.pages = [
{ title: 'Dashboard', component: DashboardPage, icon: "md-stats", color: "", iconcolor: "primary" },
{ title: 'Branches', component: BranchPage, icon: "md-home", color: "", iconcolor: "" },
{ title: 'Staff', component: DoctorPage, icon: "md-medkit", color: "", iconcolor: "" },
{ title: 'Patients', component: ViewrecordsPage, icon: "md-clipboard", color: "", iconcolor: "" },
{ title: 'Expenses', component: AdmineexpensesPage, icon: "md-cash", color: "", iconcolor: "" },
{ title: 'Appointments', component: AdmineappointmentsPage, icon: "md-list-box", color: "", iconcolor: "" },
{ title: 'Transactions', component: TransactionsPage, icon: "md-swap", color: "", iconcolor: "" },
{ title: 'Doctors History', component: AdmindoctorsPage, icon: "ios-medical", color: "", iconcolor: "" },
{ title: 'Promotional SMS', component: PromotionalSmsPage, icon: "ios-medical", color: "", iconcolor: "" }
];
<ion-split-pane when="md">
<ion-menu [content]="content">
<ion-header>
<ion-toolbar>
<ion-title>{{gmaildata.displayName}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="no-scroll">
<ion-list>
<button menuClose ion-item *ngFor="let p of pages" (click)="openPage(p)" style="padding-left:5px" [style.color]="p.iconcolor === 'primary'?'#488aff':''">
<ion-icon [name]="p.icon" item-left color="{{p.iconcolor}}"></ion-icon> {{p.title}}
</button>
</ion-list>
</ion-content>
</ion-menu>
<ion-nav [root]="rootPage" #content swipeBackEnabled="false" main></ion-nav>
</ion-split-pane>
I am working on ionic2 project.Here I have created a sidemenu with some items without using tab.But now I have a requirement of creating subitems to the sidemenu.Here is my code: How can Implement sub items to the sidemenu without using side-menu-content tab in ionic2?
Upvotes: 0
Views: 928
Reputation: 2736
You can create sub menu's for main menu using CSS properties and angular conditions. On clicking on the main menu, sub menus will display (using angular conditions) with some padding (using css properties). PFB the sample code. working version
app.html
<ion-menu [content]="mycontent">
<ion-content>
<ion-list id="sidenav">
<ion-item (click)="menuItemHandler()">Main Menu</ion-item>
<ion-item-group submenu [class.visible]="showSubmenu">
<ion-item submenu-item>Sub menu item</ion-item>
<ion-item submenu-item>Sub menu item</ion-item>
<ion-item submenu-item>Sub menu item</ion-item>
</ion-item-group>
</ion-list>
</ion-content>
</ion-menu>
<ion-nav #mycontent [root]="rootPage"></ion-nav>
app.component.ts
showSubmenu: boolean = false;
menuItemHandler(): void {
this.showSubmenu = !this.showSubmenu;
}
app.scss
#sidenav {
ion-item-group[submenu] {
overflow: hidden;
display: block;
height: 0;
transition: height .3s linear;
padding-left: 20%;
&.visible {
height: inherit;
// this is just sample value, calculate how much space you need for your menu items
}
}
}
Upvotes: 2