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
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const React = require("devtools/client/shared/vendor/react");
const NetInfoParams = React.createFactory(require("./net-info-params"));
// Shortcuts
const DOM = React.DOM;
const PropTypes = React.PropTypes;
/**
* This template represents a group of data within a tab. For example,
* Headers tab has two groups 'Request Headers' and 'Response Headers'
* The Response tab can also have two groups 'Raw Data' and 'JSON'
*/
var NetInfoGroup = React.createClass({
propTypes: {
type: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
params: PropTypes.array,
content: PropTypes.element,
open: PropTypes.bool
},
displayName: "NetInfoGroup",
getDefaultProps() {
return {
open: true,
};
},
getInitialState() {
return {
open: this.props.open,
};
},
onToggle(event) {
this.setState({
open: !this.state.open
});
},
render() {
let content = this.props.content;
if (!content && this.props.params) {
content = NetInfoParams({
params: this.props.params
});
}
let open = this.state.open;
let className = open ? "opened" : "";
return (
DOM.div({className: "netInfoGroup" + " " + className + " " +
this.props.type},
DOM.span({
className: "netInfoGroupTwisty",
onClick: this.onToggle
}),
DOM.span({
className: "netInfoGroupTitle",
onClick: this.onToggle},
this.props.name
),
DOM.div({className: "netInfoGroupContent"},
content
)
)
);
}
});
// Exports from this module
module.exports = NetInfoGroup;
|