UNPKG

1.67 kBTypeScriptView Raw
1import * as React from 'react';
2
3interface DetailLayoutProps {
4 leftComponent?: () => JSX.Element;
5 rightComponent?: () => JSX.Element;
6 headerComponent?: () => JSX.Element;
7}
8
9class DetailLayout extends React.Component<DetailLayoutProps, {}> {
10 constructor() {
11 super();
12 }
13
14 render() {
15 const headerComponent =
16 this.props.headerComponent ? (
17 this.props.headerComponent()
18 ) : null;
19
20 const leftComponent =
21 this.props.leftComponent ? (
22 this.props.leftComponent()
23 ) : null;
24
25 const rightComponent =
26 this.props.rightComponent ? (
27 this.props.rightComponent()
28 ) : null;
29
30 const leftSize = (leftComponent && rightComponent) ?
31 'ten' : 'sixteen';
32
33 const rightSize = (leftComponent && rightComponent) ?
34 'six' : 'zero';
35
36 const header =
37 this.props.headerComponent ? (
38 <div className="ui segment">
39 {headerComponent}
40 </div>
41 ) : null;
42
43 return (
44 <div className="ui segments" style={{height: '100%'}}>
45 {header}
46 <div className="main ui segment">
47 <div className="ui grid">
48 <div className={leftSize + ' wide column'}>
49 <div className="container">
50 {leftComponent}
51 </div>
52 </div>
53 <div className={rightSize + ' wide column'}>
54 <div className="container">
55 {rightComponent}
56 </div>
57 </div>
58 </div>
59 </div>
60 </div>
61 );
62 }
63}
64
65export {
66 DetailLayoutProps,
67 DetailLayout
68};