Home Reference Source

src/components/snippets/Panel/PanelBody.jsx

import React from 'react';
import PropTypes from 'prop-types';
import { CardBody, TabContent } from 'reactstrap';

/**
 * Компонент тела {@link Panel}
 * @reactProps {string} id - id для контейнера с табами
 * @reactProps {boolean} hasTabs - флаг наличия табов
 * @reactProps {string|number} activeKey - ключ активного таба
 * @reactProps {node} children - вставляемый внутрь PanelBody элемент
 */
function PanelBody({ id, activeKey, hasTabs, children }) {
  const tabContainer = (
    <TabContent id={id} activeTab={activeKey}>
      {children}
    </TabContent>
  );
  const element = () => {
    return hasTabs ? tabContainer : children;
  };

  return <CardBody>{element()}</CardBody>;
}

PanelBody.propTypes = {
  id: PropTypes.string,
  hasTabs: PropTypes.bool,
  activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
  children: PropTypes.node,
};

PanelBody.defaultProps = {
  hasTabs: false,
};

export default PanelBody;