import React from 'react'; import classNames from 'classnames'; import { SiderProps } from './Sider'; export interface BasicProps { style?: React.CSSProperties; prefixCls?: string; className?: string; } function generator(props) { return (BacicComponent): any => { return class Adapter extends React.Component { static Header: any; static Footer: any; static Content: any; static Sider: any; render() { const { prefixCls } = props; return ; } }; }; } class Basic extends React.Component { render() { const { prefixCls, className, children, ...others } = this.props; let hasSider; React.Children.forEach(children, (element: any) => { if (element && element.type && element.type.__ANT_LAYOUT_SIDER) { hasSider = true; } }); const divCls = classNames(className, prefixCls, { [`${prefixCls}-has-sider`]: hasSider, }); return (
{children}
); } } const Layout: React.ComponentClass & { Header: React.ComponentClass; Footer: React.ComponentClass; Content: React.ComponentClass; Sider: React.ComponentClass; } = generator({ prefixCls: 'ant-layout', })(Basic); const Header = generator({ prefixCls: 'ant-layout-header', })(Basic); const Footer = generator({ prefixCls: 'ant-layout-footer', })(Basic); const Content = generator({ prefixCls: 'ant-layout-content', })(Basic); Layout.Header = Header; Layout.Footer = Footer; Layout.Content = Content; export default Layout;