/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import React from 'react';
import {
EuiFlexGroup,
EuiFlexItem,
EuiHorizontalRule,
EuiPanel,
EuiTitle,
EuiText,
EuiSpacer,
} from '@elastic/eui';
interface ContentPanelProps {
title?: string | JSX.Element;
titleSize?: 'xxxs' | 'xxs' | 'xs' | 's' | 'm' | 'l';
subTitleText?: string | JSX.Element;
bodyStyles?: object;
panelStyles?: object;
actions?: React.ReactNode | React.ReactNode[];
children: React.ReactNode | React.ReactNode[];
hideHeaderBorder?: boolean;
className?: string;
}
const renderSubTitleText = (subTitleText: string | JSX.Element): JSX.Element | null => {
if (typeof subTitleText === 'string') {
if (!subTitleText) return null;
return (
{subTitleText}
);
}
return subTitleText;
};
const ContentPanel: React.SFC = ({
title = '',
titleSize = 'm',
subTitleText = '',
bodyStyles = {},
panelStyles = {},
actions,
children,
hideHeaderBorder = false,
className = '',
}) => (
{typeof title === 'string' ? (
{title}
) : (
title
)}
{renderSubTitleText(subTitleText)}
{actions ? (
{Array.isArray(actions) ? (
(actions as React.ReactNode[]).map(
(action: React.ReactNode, idx: number): React.ReactNode => (
{action}
)
)
) : (
{actions}
)}
) : null}
{hideHeaderBorder ? : }
{children}
);
export default ContentPanel;