An object defining configuration properties for the TabPanel UI component.
Specifies the shortcut key that sets focus on the UI component.
Selector: access-key
Default Value: undefined
The value of this property will be passed to the accesskey
attribute of the HTML element that underlies the UI component.
Specifies whether the UI component changes its visual state as a result of user interaction.
Selector: active-state-enabled
Default Value: false
The UI component switches to the active state when users press down the primary mouse button. When this property is set to true, the CSS rules for the active state apply. You can change these rules to customize the component.
Use this property when you display the component on a platform whose guidelines include the active state change for UI components.
Specifies whether or not to animate the displayed item change.
Selector: animation-enabled
Default Value: false, true (Android, iOS)
Binds the UI component to data.
Selector: data-source
Default Value: null
The TabPanel works with collections of string
values or objects.
Depending on your data source, bind TabPanel to data as follows. If the data source provides objects, also specify the itemTemplate. You can skip this part if the objects contain fields described in the items section.
Data Array
Assign the array to the dataSource option.
Read-Only Data in JSON Format
Set the dataSource property to the URL of a JSON file or service that returns JSON data.
OData
Implement an ODataStore.
Web API, PHP, MongoDB
Use one of the following extensions to enable the server to process data according to the protocol DevExtreme UI components use:
Then, use the createStore method to configure access to the server on the client as shown below. This method is part of DevExtreme.AspNet.Data.
jQuery$(function() { let serviceUrl = "https://url/to/my/service"; $("#tabPanelContainer").dxTabPanel({ // ... dataSource: DevExpress.data.AspNet.createStore({ key: "ID", loadUrl: serviceUrl + "/GetAction", insertUrl: serviceUrl + "/InsertAction", updateUrl: serviceUrl + "/UpdateAction", deleteUrl: serviceUrl + "/DeleteAction" }) }) });Angular
import { Component } from '@angular/core'; import CustomStore from 'devextreme/data/custom_store'; import { createStore } from 'devextreme-aspnet-data-nojquery'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { store: CustomStore; constructor() { let serviceUrl = "https://url/to/my/service"; this.store = createStore({ key: "ID", loadUrl: serviceUrl + "/GetAction", insertUrl: serviceUrl + "/InsertAction", updateUrl: serviceUrl + "/UpdateAction", deleteUrl: serviceUrl + "/DeleteAction" }) } }
<dx-tab-panel ... [dataSource]="store"> </dx-tab-panel>
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxTabPanelModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxTabPanelModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }Vue
<template> <DxTabPanel ... :data-source="store" /> </template> <script> import 'devextreme/dist/css/dx.light.css'; import CustomStore from 'devextreme/data/custom_store'; import { createStore } from 'devextreme-aspnet-data-nojquery'; import { DxTabPanel } from 'devextreme-vue/tab-panel'; export default { components: { DxTabPanel }, data() { const serviceUrl = "https://url/to/my/service"; const store = createStore({ key: "ID", loadUrl: serviceUrl + "/GetAction", insertUrl: serviceUrl + "/InsertAction", updateUrl: serviceUrl + "/UpdateAction", deleteUrl: serviceUrl + "/DeleteAction" }); return { store } } } </script>React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import CustomStore from 'devextreme/data/custom_store'; import { createStore } from 'devextreme-aspnet-data-nojquery'; import TabPanel from 'devextreme-react/tab-panel'; const serviceUrl = "https://url/to/my/service"; const store = createStore({ key: "ID", loadUrl: serviceUrl + "/GetAction", insertUrl: serviceUrl + "/InsertAction", updateUrl: serviceUrl + "/UpdateAction", deleteUrl: serviceUrl + "/DeleteAction" }); class App extends React.Component { render() { return ( <TabPanel ... dataSource={store} /> ); } } export default App;
Any other data source
Implement a CustomStore.
Regardless of the data source on the input, the TabPanel always wraps it in the DataSource object. This object allows you to sort, filter, group, and perform other data shaping operations. To get its instance, call the getDataSource() method.
Review the following notes about data binding:
Do not specify the items property if you specified the dataSource, and vice versa.
Field names cannot be equal to this
and should not contain the following characters: .
, :
, [
, and ]
.
TabPanel does not execute dataSource.sort functions. To implement custom sorting logic, implement columns[].calculateSortValue.
Specifies whether to render the view's content when it is displayed. If false, the content is rendered immediately.
Selector: defer-rendering
Default Value: true
AngularIf you set the deferRendering
property to true, wrap the content in the Angular named template.
If you set the deferRendering
property to true, wrap the content in the Vue named template.
Specifies whether the UI component responds to user interaction.
Specifies the global attributes to be attached to the UI component's container element.
Selector: DxElementAttr
Default Value: {}
jQuery$(function(){ $("#tabPanelContainer").dxTabPanel({ // ... elementAttr: { id: "elementId", class: "class-name" } }); });Angular
<dx-tab-panel ... [elementAttr]="{ id: 'elementId', class: 'class-name' }"> </dx-tab-panel>
import { DxTabPanelModule } from "devextreme-angular"; // ... export class AppComponent { // ... } @NgModule({ imports: [ // ... DxTabPanelModule ], // ... })Vue
<template> <DxTabPanel ... :element-attr="tabPanelAttributes"> </DxTabPanel> </template> <script> import DxTabPanel from 'devextreme-vue/tab-panel'; export default { components: { DxTabPanel }, data() { return { tabPanelAttributes: { id: 'elementId', class: 'class-name' } } } } </script>React
import React from 'react'; import TabPanel from 'devextreme-react/tab-panel'; class App extends React.Component { tabPanelAttributes = { id: 'elementId', class: 'class-name' } render() { return ( <TabPanel ... elementAttr={this.tabPanelAttributes}> </TabPanel> ); } } export default App;
Specifies whether the UI component can be focused using keyboard navigation.
Selector: focus-state-enabled
Default Value: true (desktop)
Specifies the UI component's height.
This property accepts a value of one of the following types:
Number
The height in pixels.
String
A CSS-accepted measurement of height. For example, "55px"
, "20vh"
, "80%"
, "inherit"
.
Specifies text for a hint that appears when a user pauses on the UI component.
Specifies whether the UI component changes its state when a user pauses on it.
Selector: hover-state-enabled
Default Value: true
Specifies icon position relative to the text inside the tab.
Selector: icon-position
Default Value: 'start', 'top' (Fluent, Material)
The following values are available:
'start'
The icon appears before the text.
'end'
The icon appears after the text.
'top'
The icon appears above the text.
'bottom'
The icon appears below the text.
The alignment of content in a tab item directly depends on the iconPosition value. If a tab item has an icon and iconPosition: 'top'
or iconPosition: 'bottom'
, the content alignment is centered. If you set iconPosition: 'start'
or iconPosition: 'end'
, the content is aligned to the edge of the tab.
The same applies if items do not include icons: content is aligned equally in all tab items.
The time period in milliseconds before the onItemHold event is raised.
Selector: item-hold-timeout
Default Value: 750
An array of items displayed by the UI component.
The items array can contain:
If you need to update the UI component items, reassign the entire items array as shown in the following example:
tabPanelInstance.option('items', newItems);
As an alternative to items, you can use the dataSource property. It accepts the DataSource object, whose underlying stores provide an API that allows you to update individual items without reassigning the entire item collection.
Do not use the items property if you use dataSource, and vice versa.
Specifies a custom template for items.
Selector: item-template
Template Data:The item object to be rendered.
Default Name: 'item'
Specifies a custom template for item titles.
Selector: item-title-template
Template Data:The current item's data.
Default Name: 'title'
Specifies the key property used to access data items. Each key value must be unique.
Selector: key-expr
Default Value: null
A Boolean value specifying whether or not to scroll back to the first item after the last item is swiped.
Specifies the text or HTML markup displayed by the UI component if the item collection is empty.
Selector: no-data-text
Default Value: 'No data to display'
The TabPanel component evaluates the noDataText property's value. This evaluation, however, makes the TabPanel potentially vulnerable to XSS attacks. To guard against these attacks, encode the HTML markup before you assign it to the noDataText property. Refer to the following help topic for more information: Potentially Vulnerable API - noDataText.
A function that is executed when the UI component is rendered and each time the component is repainted.
Selector: @content-ready
Function parameters:Information about the event.
Object structure:
Default Value: null
A function that is executed before the UI component is disposed of.
Selector: @disposing
Function parameters:Information about the event.
Object structure:
Default Value: null
A function used in JavaScript frameworks to save the UI component instance.
Selector: @initialized
Function parameters:Information about the event.
Object structure:
Default Value: null
Angular<dx-tab-panel ... (onInitialized)="saveInstance($event)"> </dx-tab-panel>
import { Component } from "@angular/core"; import TabPanel from "devextreme/ui/data_grid"; // ... export class AppComponent { tabPanelInstance: TabPanel; saveInstance (e) { this.tabPanelInstance = e.component; } }Vue
App.vue (Composition API)
<template> <div> <DxTabPanel ... @initialized="saveInstance"> </DxTabPanel> </div> </template> <script> import DxTabPanel from 'devextreme-vue/tab-panel'; export default { components: { DxTabPanel }, data: function() { return { tabPanelInstance: null }; }, methods: { saveInstance: function(e) { this.tabPanelInstance = e.component; } } }; </script>
<template> <div> <DxTabPanel ... @initialized="saveInstance"> </DxTabPanel> </div> </template> <script setup> import DxTabPanel from 'devextreme-vue/tab-panel'; let tabPanelInstance = null; const saveInstance = (e) => { tabPanelInstance = e.component; } </script>React
import TabPanel from 'devextreme-react/tab-panel'; class App extends React.Component { constructor(props) { super(props); this.saveInstance = this.saveInstance.bind(this); } saveInstance(e) { this.tabPanelInstance = e.component; } render() { return ( <div> <TabPanel onInitialized={this.saveInstance} /> </div> ); } }See Also jQuery
A function that is executed when a collection item is clicked or tapped.
Selector: @item-click
Function parameters:Information about the event.
Object structure:
Default Value: null
A function that is executed when a collection item is right-clicked or pressed.
Selector: @item-context-menu
Function parameters:Information about the event.
Object structure:
Default Value: null
A function that is executed when a collection item has been held for a specified period.
Selector: @item-hold
Function parameters:Information about the event.
Object structure:
Default Value: null
A function that is executed after a collection item is rendered.
Selector: @item-rendered
Function parameters:Information about the event.
Object structure:
Default Value: null
A function that is executed after a UI component property is changed.
Selector: @option-changed
Function parameters:Information about the event.
Object structure:
Name Type Description value anyThe modified property's new value.
previousValue anyThe UI component's previous value.
nameThe modified property if it belongs to the first level. Otherwise, the first-level property it is nested into.
fullNameThe path to the modified property that includes all parent properties.
elementThe UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.
componentThe UI component's instance.
Default Value: null
The following example shows how to subscribe to component property changes:
jQuery$(function() { $("#tabPanelContainer").dxTabPanel({ // ... onOptionChanged: function(e) { if(e.name === "changedProperty") { // handle the property change here } } }); });Angular
<dx-tab-panel ... (onOptionChanged)="handlePropertyChange($event)"> </dx-tab-panel>
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { // ... handlePropertyChange(e) { if(e.name === "changedProperty") { // handle the property change here } } }
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxTabPanelModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxTabPanelModule ], providers: [ ], bootstrap: [AppComponent] }) export class AppModule { }Vue
<template> <DxTabPanel ... @option-changed="handlePropertyChange" /> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxTabPanel from 'devextreme-vue/tab-panel'; export default { components: { DxTabPanel }, // ... methods: { handlePropertyChange: function(e) { if(e.name === "changedProperty") { // handle the property change here } } } } </script>React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import TabPanel from 'devextreme-react/tab-panel'; const handlePropertyChange = (e) => { if(e.name === "changedProperty") { // handle the property change here } } export default function App() { return ( <TabPanel ... onOptionChanged={handlePropertyChange} /> ); }
A function that is called after selection changes.
Selector: @selection-changed
Function parameters:Information about the event.
Object structure:
Name Type Description removedItemsArray<any>
The data of the items removed from selection.
elementThe UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.
componentThe UI component's instance.
addedItemsArray<any>
The data of the selected items.
Default Value: null
A function that is called before selection changes.
Selector: @selection-changing
Function parameters:Information about the event.
Object structure:
Default Value: null
A function that is executed when a tab is clicked or tapped.
Selector: @title-click
Function parameters:Information about the event.
Object structure:
Default Value: null
A function that is executed when a tab has been held for a specified period.
Selector: @title-hold
Function parameters:Event information.
Object structure:
Default Value: null
A function that is executed after a tab is rendered.
Selector: @title-rendered
Function parameters:Event information.
Object structure:
Default Value: null
Specifies whether to repaint only those elements whose data changed.
Selector: repaint-changes-only
Default Value: false
Switches the UI component to a right-to-left representation.
Selector: rtl-enabled
Default Value: false
When this property is set to true, the UI component text flows from right to left, and the layout of elements is reversed. To switch the entire application/site to the right-to-left representation, assign true to the rtlEnabled field of the object passed to the DevExpress.config(config) method.
DevExpress.config({ rtlEnabled: true });
DataGrid Demo Navigation UI Demo Editors Demo
A Boolean value specifying if tabs in the title are scrolled by content.
Selector: scroll-by-content
Default Value: true
A Boolean indicating whether or not to add scrolling support for tabs in the title.
Selector: scrolling-enabled
Default Value: true
The index of the currently displayed item.
Selector: selected-index
Default Value: 0
The selected item object.
Selector: selected-item
Type: any
Default Value: null
Specifies whether navigation buttons should be available when tabs exceed the UI component's width.
Selector: show-nav-buttons
Default Value: false
Specifies the styling mode for the active tab.
Selector: styling-mode
Default Value: 'primary', 'secondary' (Fluent)
The following styling modes are available:
'primary'
The width of the underline is fixed.
'secondary'
The width of the underline depends on tab content.
A Boolean value specifying whether or not to allow users to change the selected index by swiping.
Selector: swipe-enabled
Default Value: false (non-touch devices)
Specifies the number of the element when the Tab key is used for navigating.
Selector: tab-index
Default Value: 0
The value of this property will be passed to the tabindex
attribute of the HTML element that underlies the UI component.
Specifies tab position relative to the panel.
Selector: tabs-position
Default Value: 'top'
The following positions are available:
'top' (default)
'bottom'
'right'
'left'
Specifies whether the UI component is visible.
Specifies the UI component's width.
This property accepts a value of one of the following types:
Number
The width in pixels.
String
A CSS-accepted measurement of width. For example, "55px"
, "20vw"
, "80%"
, "auto"
, "inherit"
.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4