react-basic-tabs

React Basic TabPanel

Usage no npm install needed!

<script type="module">
  import reactBasicTabs from 'https://cdn.skypack.dev/react-basic-tabs';
</script>

README

react-basic-tabs

React Basic TabPanel

This component is a very simple yet powerful tab panel. You only have to require it (there are no css files involved).

For flexibility it leaves styling up to the end-user. (It does render html with some css class names, so you can use those to style your component).

Install

$ npm install react-basic-tabs

Usage

var React    = require('react')
var TabPanel = require('react-basic-tabs')

var App = React.createClass({

    getInitialState: function(){
        return {
            activeIndex: 1
        }
    },

    handleChange: function(index){
        this.setState({
            activeIndex: index
        })
    },

    render: function() {
        return (
            <TabPanel activeIndex={this.state.activeIndex}
                onChange={this.handleChange}
                titleStyle={{padding: 10}}
            >
                <div title="One">first</div>
                <div title="Two">second</div>
                <div title="Three">third</div>
            </TabPanel>
        )
    }
})

React.render( <App />, document.body)

Properties

The TabPanel supports the following props:

  • activeIndex: Number - the index of the TabPanel children to be rendered as active

  • onChange: Function(index) - the function to be called when the user selects another tab to be the active tab. The first param is the new activeIndex to be set

  • titleStyle: Object - style to be applied to tab titles

  • defaultStyle: Object - style to be applied to every tab in the tabpanel.

  • hiddenStyle: Object - style to be applied to hidden tabs in the tabpanel. If you specify this, make sure you include display: 'none'

For tab titles, the children of the TabPanel are expected to have have either a title property, or a tabTitle property (the tabTitle property has higher priority, and will be used if specified as s truthy value).

Styling

For styling, the following classes are present in the rendered html:

  • 'basic-tabs' - className for the React component.
  • 'basic-tabs-strip' - the nav element containing the tab titles
  • 'basic-tabs-item-title' - a li with the title of each tab
  • 'basic-tabs-item-title.active' - the active version of the above
  • 'basic-tabs-container' - the body of the tab panel
  • 'basic-tabs-item' - html article tags inside the .basic-tabs-container. Those hold the actual children of the tab panel
  • 'basic-tabs-item.active' - the active version of the above