# rc-tabs --- React Tabs [![NPM version][npm-image]][npm-url] [![build status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] [![gemnasium deps][gemnasium-image]][gemnasium-url] [![npm download][download-image]][download-url] [npm-image]: http://img.shields.io/npm/v/rc-tabs.svg?style=flat-square [npm-url]: http://npmjs.org/package/rc-tabs [travis-image]: https://img.shields.io/travis/react-component/tabs.svg?style=flat-square [travis-url]: https://travis-ci.org/react-component/tabs [coveralls-image]: https://img.shields.io/coveralls/react-component/tabs.svg?style=flat-square [coveralls-url]: https://coveralls.io/r/react-component/tabs?branch=master [gemnasium-image]: http://img.shields.io/gemnasium/react-component/tabs.svg?style=flat-square [gemnasium-url]: https://gemnasium.com/react-component/tabs [node-url]: http://nodejs.org/download/ [download-image]: https://img.shields.io/npm/dm/rc-tabs.svg?style=flat-square [download-url]: https://npmjs.org/package/rc-tabs ## Screenshot ## Example http://localhost:8000/examples online example: http://react-component.github.io/tabs/ ## install [![rc-tabs](https://nodei.co/npm/rc-tabs.png)](https://npmjs.org/package/rc-tabs) ## Feature ### Keyboard - left and up: switch to previous tab - right and down: switch to next tab ## Usage ```js import Tabs, { TabPane } from "rc-tabs"; import TabContent from "rc-tabs/lib/TabContent"; import ScrollableInkTabBar from "rc-tabs/lib/ScrollableInkTabBar"; var callback = function(key) {}; React.render( } renderTabContent={() => }> first second third , document.getElementById("t2") ); ``` ### Usage of navWrapper() function navWrapper() prop allows to wrap tabs bar in a component to provide additional features. Eg with react-sortablejs to make tabs sortable by DnD : ```js import Sortable from 'react-sortablejs'; navWrapper={(content) => {content}} ``` ## API ### Tabs #### props:
name type default description
activeKey String current active tabPanel's key
tabBarPosition String tab nav 's position. one of ['left','right','top','bottom']
defaultActiveKey String first active tabPanel's key initial active tabPanel's key if activeKey is absent
renderTabBar ():React.Node How to render tab bar
renderTabContent ():React.Node How to render tab content
navWrapper (tabContent: React.Node):React.Node Wrapper function that will wrap around tab panes, whould be useful for features such as drag and drop
onChange (key: string): void called when tabPanel is changed
destroyInactiveTabPane Boolean false whether destroy inactive tabpane when change tab
prefixCls String rc-tabs prefix class name, use to custom style
direction String ltr Layout direction of tabs component, it supports RTL direction too.
### TabPane #### props:
name type default description
key Object corresponding to activeKey, should be unique
style Object
placeholder React.Node lazyrender children
tab React.Node current tab's title corresponding to current tabPane
forceRender Boolean false forced render of content in tabs, not lazy render after clicking on tabs
### lib/TabBar
name type default description
onTabClick (key: string, event: MouseEvent): void callback when tab clicked
style bar style
extraContent React Node extra content placed one the right of tab bar
tabBarGutter number the gap between tabs
### lib/InkTabBar tab bar with ink indicator, in addition to tab bar props, extra props:
name type default description
styles { inkBar } can set inkBar style
### lib/ScrollableTabBar scrollable tab bar, in addition to tab bar props, extra props:
name type default description
onPrevClick (e: Event): void callback when prev button is clicked
onNextClick (e: Event): void callback when next button is clicked
prevIcon ReactNode specific the prev icon
nextIcon ReactNode specific the next icon
### lib/ScrollableInkTabBar scrollable tab bar with ink indicator, same with tab bar and ink bar and scrollable bar props. | name | type | default | description | | -------- | -------------- | ------- | ---------------------- | | children | (node) => node | - | Customize tab bar node | ### lib/SwipeableInkTabBar (Use for Mobile) swipeable tab bar with ink indicator, same with tab bar/ink bar props, and below is the additional props.
name type default description
pageSize number 5 show how many tabs at one page
speed number 5 swipe speed, 1 to 10, more bigger more faster
hammerOptions Object options for react-hammerjs
### lib/TabContent
name type default description
style Object tab content style
animated Boolean true whether tabpane change with animation
animatedWithMargin Boolean false whether animate tabpane with css margin
### lib/SwipeableTabContent swipeable tab panes, in addition to lib/TabContent props, extra props:
name type default description
hammerOptions Object options for react-hammerjs
## Note If you want to support old browsers(which does not support flex/css-transition), please load the following script inside head to add no-flexbox/no-csstransition css classes ``` https://as.alipayobjects.com/g/component/modernizr/2.8.3/modernizr.min.js ``` ## Development ``` npm install npm start ``` ## Test Case ``` npm test npm run chrome-test ``` ## Coverage ``` npm run coverage ``` open coverage/ dir ## License rc-tabs is released under the MIT license.