/
AppBody.tsx
81 lines (76 loc) · 1.61 KB
/
AppBody.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import * as React from 'react';
/**
* React Props interface
*/
interface IAppBodyProps {
/**
* Array of CommentCard React Components
*
* @type React.ReactNode
*/
cards: React.ReactNode[];
/**
* Tracks if card is expanded
*
* @type boolean
*/
expanded: boolean;
/**
* New thread button card
*/
newThreadButton: React.ReactNode | undefined;
}
/**
* App Body React Component
*/
export class AppBody extends React.Component<IAppBodyProps> {
/**
* Constructor
*
* @param props React props
*/
constructor(props: IAppBodyProps) {
super(props);
}
/**
* React render function
*/
render(): React.ReactNode {
const items = this.props.cards.map((card, i) => <div key={i}>{card}</div>);
return (
<div
style={
this.props.expanded
? this.styles['jp-commenting-body-area-expanded']
: this.styles['jp-commenting-body-area']
}
>
{!this.props.expanded && this.props.newThreadButton}
{items}
</div>
);
}
/**
* CSS styles
*/
styles = {
'jp-commenting-body-area': {
width: '100%',
maxHeight: '94%',
overflowY: 'scroll' as 'scroll',
overflowX: 'hidden' as 'hidden',
boxSizing: 'border-box' as 'border-box',
justifyContent: 'center',
padding: '4px'
},
'jp-commenting-body-area-expanded': {
width: '100%',
maxHeight: '96%',
overflowY: 'scroll' as 'scroll',
overflowX: 'hidden' as 'hidden',
boxSizing: 'border-box' as 'border-box',
justifyContent: 'center',
padding: '4px'
}
};
}