Your search did not match any results.

Tab Panel

The TabPanel is a widget consisting of the Tabs and the MultiView widgets. It automatically synchronizes the selected tab with the currently displayed view and vice versa. In this demo, the appearance of views and tabs is defined by custom templates.
Copy to Plunker
<dx-tab-panel #tabPanel [height]="260" [dataSource]="companies" [selectedIndex]="0" [loop]="false" [animationEnabled]="true" [swipeEnabled]="true" > <div *dxTemplate="let company of 'title'"> <span>{{company.CompanyName}}</span> </div> <div *dxTemplate="let company of 'item'"> <div class="tabpanel-item"> <div> <p> <b>{{company.City}}</b> (<span>{{company.State}}</span>) </p> <p> <span>{{company.Zipcode}}</span> <span>{{company.Address}}</span> </p> </div> <div> <p> Phone: <b>{{company.Phone}}</b> </p> <p> Fax: <b>{{company.Fax}}</b> </p> <p> Website: <a href="{{company.Website}}" target="_blank"> {{company.Website}} </a> </p> </div> </div> </div> </dx-tab-panel> <div class="item-box"> Item <span>{{tabPanel.selectedIndex + 1}}</span> of <span>{{itemCount}}</span> </div> <div class="options"> <div class="caption">Options</div> <div class="option"> <dx-check-box text="Loop enabled" [(value)]="tabPanel.loop" ></dx-check-box> </div> <div class="option"> <dx-check-box text="Animation enabled" [(value)]="tabPanel.animationEnabled" ></dx-check-box> </div> <div class="option"> <dx-check-box text="Swipe enabled" [(value)]="tabPanel.swipeEnabled" ></dx-check-box> </div> </div>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxTabPanelModule,DxCheckBoxModule, DxTemplateModule } from 'devextreme-angular'; import { Company, Service } from './app.service'; if(!/localhost/.test( { enableProdMode(); } @Component({ selector: 'demo-app', templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], providers: [Service] }) export class AppComponent { companies: Company[]; itemCount: number; constructor(service: Service) { this.companies = service.getCompanies(); this.itemCount = this.companies.length; } } @NgModule({ imports: [ BrowserModule, DxTabPanelModule, DxCheckBoxModule, DxTemplateModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ .tabpanel-item { height: 200px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; padding-left: 25px; padding-top: 55px; } /deep/ .mobile .tabpanel-item { padding-top: 10px; } /deep/ .tabpanel-item > div { float: left; padding: 0 85px 10px 10px } /deep/ .tabpanel-item p { font-size: 16px; } /deep/ .item-box { font-size: 16px; margin: 15px 0 45px 10px; } /deep/ .options { padding: 20px; background-color: #f5f5f5; margin-top: 20px; } /deep/ .caption { font-size: 18px; font-weight: 500; } /deep/ .option { margin-top: 10px; }
import { Injectable } from '@angular/core'; export class Company { ID: number; CompanyName: string; Address: string; City: string; State: string; Zipcode: number; Phone: string; Fax: string; Website: string; } let companies: Company[] = [{ "ID": 1, "CompanyName": "SuprMart", "Address": "702 SW 8th Street", "City": "Bentonville", "State": "Arkansas", "Zipcode": 72716, "Phone": "(800) 555-2797", "Fax": "(800) 555-2171", "Website": "" }, { "ID": 2, "CompanyName": "El'Depot", "Address": "2455 Paces Ferry Road NW", "City": "Atlanta", "State": "Georgia", "Zipcode": 30339, "Phone": "(800) 595-3232", "Fax": "(800) 595-3231", "Website": "" }, { "ID": 3, "CompanyName": "K&S Music", "Address": "1000 Nicllet Mall", "City": "Minneapolis", "State": "Minnesota", "Zipcode": 55403, "Phone": "(612) 304-6073", "Fax": "(612) 304-6074", "Website": "" }, { "ID": 4, "CompanyName": "Tom Club", "Address": "999 Lake Drive", "City": "Issaquah", "State": "Washington", "Zipcode": 98027, "Phone": "(800) 955-2292", "Fax": "(800) 955-2293", "Website": "" }]; @Injectable() export class Service { getCompanies(): Company[] { return companies; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular and DevExtreme here: // System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': '' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.1', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!DOCTYPE html> <html xmlns=""> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="dx-theme" data-theme="generic.light" href="" /> <link rel="dx-theme" data-theme="android5.light" href="" /> <link rel="dx-theme" data-theme="ios7.default" href="" /> <link rel="dx-theme" data-theme="" href="" /> <link rel="dx-theme" data-theme="win10.white" href="" /> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>