// A '.tsx' file enables JSX support in the TypeScript compiler, // for more information see the following page on the TypeScript wiki: // https://github.com/Microsoft/TypeScript/wiki/JSX namespace flex { export class TabNavigator extends React.Component { public render(): JSX.Element { if (this.state == null) this.state = { selectedIndex: this.props.selectedIndex }; if (this.state.selectedIndex == undefined) this.state = { selectedIndex: 0 }; let children: NavigatorContent[] = this.props.children as NavigatorContent[]; let selected: NavigatorContent = children[this.state.selectedIndex]; let tabs: JSX.Element[] = []; for (let i = 0; i < children.length; i++) { let child: NavigatorContent = children[i]; let className: string = (i == this.state.selectedIndex) ? "active" : ""; let label: JSX.Element =
  • {child.props.label}
  • ; tabs.push(label); } let ret: JSX.Element =
    {selected}
    ; return ret; } private handle_change(index: number, event: React.MouseEvent): void { this.setState({ selectedIndex: index }); } } export class NavigatorContent extends React.Component { public render(): JSX.Element { return
    {this.props.children}
    ; } } export interface TabNavigatorProps extends React.Props { selectedIndex?: number; style?: React.CSSProperties; } export interface NavigatorContentProps extends React.Props { label: string; } }