123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /* 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;
|