/** * empty comment line Sergey Shishigin * * @author: Sergey Shishigin * @date: 2019-04-23 */ import * as React from 'react'; import {Layout} from 'antd'; import {Helmet} from 'react-helmet'; import {Divider, Icon, PLACEMENT, SIZE, Tooltip} from '../..'; import {IconName} from '@unidata/icon'; import * as styles from './pageHeader.m.css'; type BaseHeaderProps = { groupSectionTitle: string; sectionTitle: React.ReactNode; sectionTitleTooltip?: string; sectionSubTitle?: React.ReactNode; itemTitle?: React.ReactNode; afterTitleContent?: React.ReactNode; horizontalMenu?: JSX.Element; iconType?: IconName; pageTitle?: string; } export type IHeaderProps = BaseHeaderProps & ({ extraButtons?: JSX.Element; } | { controls?: React.ReactNode[]; }); export class PageHeader extends React.Component { get className () { const {horizontalMenu} = this.props; let classes: string[] = [styles.pageHeader]; if (horizontalMenu) { classes.push(styles.withHorizontalMenu); } return classes.join(' '); } override render () { const {groupSectionTitle, sectionTitle, sectionTitleTooltip, itemTitle, afterTitleContent, iconType, horizontalMenu, sectionSubTitle, pageTitle } = this.props; const controls = 'controls' in this.props && this.props.controls; const extraButtons = 'extraButtons' in this.props && this.props.extraButtons; return ( {pageTitle !== undefined && ( )}
{iconType !== undefined && (
)}
{groupSectionTitle}
{sectionTitle}
{sectionSubTitle && ( {typeof sectionSubTitle === 'string' ? ( {sectionSubTitle} ) : sectionSubTitle} )} {itemTitle && ( <>  /  {itemTitle} )}
{afterTitleContent}
{controls !== false && controls !== undefined && (
{controls.map((control, index) => { return ( {index > 0 && ( )} {control} ); })}
)} {extraButtons !== false && extraButtons !== undefined && (
{extraButtons}
)}
{/* TODO: it is not clear how to make responsive design for a variable set of buttons */} {/* TODO: tab buttons are not implemented yet, as in the layout */} {horizontalMenu && (
{horizontalMenu}
)}
); } }