| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | // @flow
import React, { Component } from 'react';
/**
 * The type of the React {@code Component} props of {@link Tab}
 */
type Props = {
    /**
     * The index of the tab.
     */
    index: number,
    /**
     * Indicates if the tab is selected or not.
     */
    isSelected: boolean,
    /**
     * The label of the tab.
     */
    label: string,
    /**
     * Handler for selecting the tab.
     */
    onSelect: Function
}
/**
 * A React component that implements tabs.
 *
 */
export default class Tab extends Component<Props> {
    /**
     * Initializes a new {@code Tab} instance.
     *
     * @inheritdoc
     */
    constructor(props: Props) {
        super(props);
        this._onSelect = this._onSelect.bind(this);
    }
    _onSelect: () => void;
    /**
     * Selects a tab.
     *
     * @returns {void}
     */
    _onSelect() {
        const { index, onSelect } = this.props;
        onSelect(index);
    }
    /**
     * Implements the React Components's render method.
     *
     * @inheritdoc
     */
    render() {
        const { index, isSelected, label } = this.props;
        const className = `tab${isSelected ? ' selected' : ''}`;
        return (
            <div
                className = { className }
                key = { index }
                onClick = { this._onSelect }>
                { label }
            </div>);
    }
}
 |