import React, { HTMLAttributes, ReactNode, useContext } from 'react'; import usePlatform from '../../hooks/usePlatform'; import getClassname from '../../helpers/getClassName'; import classNames from '../../lib/classNames'; import FixedLayout from '../FixedLayout/FixedLayout'; import Separator from '../Separator/Separator'; import { ANDROID } from '../../lib/platform'; import { HasRef, HasRootRef } from '../../types'; import { ConfigProviderContext, WebviewType } from '../ConfigProvider/ConfigProviderContext'; import { PanelContext } from '../Panel/PanelContext'; export interface PanelHeaderProps extends HTMLAttributes, HasRef, HasRootRef { left?: ReactNode; /** * @deprecated будет удалено в 4-й версии. Раньше использовалось, как текстовое дополнение к PanelHeaderBack в iOS. */ addon?: ReactNode; right?: ReactNode; separator?: boolean; transparent?: boolean; /** * Если `false`, то шапка будет нулевой высоты и контент панели "залезет" под неё */ visor?: boolean; } const PanelHeader = ({ className, left, addon, children, right, separator, visor, transparent, getRef, getRootRef, ...restProps }: PanelHeaderProps) => { const platform = usePlatform(); const { webviewType } = useContext(ConfigProviderContext); const panelContext = useContext(PanelContext); let needSeparator = separator; if (typeof separator !== 'boolean') { needSeparator = panelContext.separator; } const isPrimitive = typeof children === 'string' || typeof children === 'number'; return ( {left} {platform !== ANDROID && addon} {isPrimitive ? {children} : children} {webviewType !== WebviewType.VKAPPS && right} {needSeparator && visor && } ); }; PanelHeader.defaultProps = { separator: true, transparent: false, visor: true, }; export default PanelHeader;