UNPKG

@swrve/core

Version:

Core set of Swrve UI Components

60 lines (50 loc) 1.35 kB
import React from 'react' import { array, node, object, oneOfType, string } from 'prop-types' import List from './List' import Views from './Views' class Tabs extends React.Component { state = { activeIndex: 0 } onClickHandler = index => { this.setState({ activeIndex: index }) } render() { const { children, className, ...props } = this.props return ( <div {...props} className={className}> {React.Children.map(children, (child, index) => { if (child.type === Tabs.List) { return React.cloneElement(child, { ...child.props, activeIndex: this.state.activeIndex, onClickHandler: this.onClickHandler }) } else if (child.type === Tabs.Views) { return React.cloneElement(child, { ...child.props, activeIndex: this.state.activeIndex }) } else { return child } })} </div> ) } } Tabs.displayName = 'Tabs' Tabs.propTypes = { /** Card content */ children: node, /** Additional classnames */ className: oneOfType([string, object, array]) } Tabs.defaultProps = { className: '' } Tabs.List = List Tabs.List.displayName = 'Tabs.List' Tabs.Views = Views Tabs.Views.displayName = 'Tabs.Views' export default Tabs