import React from 'react'; export default class TabPanel extends React.PureComponent { state = { selected: 0, tabs: this.props.tabs } render() { var bar = []; var body = []; for (var i = 0; i < this.state.tabs.length; i++) { var t = this.state.tabs[i]; bar.push(
{t.noclose ? null : } {t.title}
); body.push(
{t.children}
); } return
{bar}
{body}
} componentWillReceiveProps(nextProps, nextContent) { // FIXME: Do not own tabs? this.setState({ selected: this.state.selected % nextProps.tabs.length, tabs: nextProps.tabs }); } switchTab = (ev) => { this.setState({ selected: ev.target.id.substr(5) }); } closeTab = (ev) => { var self = this; var tab = ev.target.parentNode; //this.setState({ closing: tab.id.substr(5) }); tab.style.width = '1px'; tab.style.padding = '0'; tab.style.opacity = '0'; setTimeout(function() { var t = self.state.tabs; t.splice(tab.id.substr(5), 1); var s = self.state.selected; if ('t-tab'+s == tab.id) s = self.state.selected-1; this.setState({ tabs: t, selected: s }); }, 200); ev.stopPropagation(); } }