fune/devtools/client/aboutdebugging/components/PanelMenuEntry.js
Michael Ratcliffe 07fae2ebf6 Bug 1417444 - about:debugging to use prop-types and react-dom-factories r=jdescottes
MozReview-Commit-ID: EQ5MSMrvdWW

--HG--
extra : rebase_source : fb7427c518f7bf6c5e4abc079b6568ca73d0546c
2017-11-15 14:48:37 +00:00

49 lines
1.4 KiB
JavaScript

/* 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 { Component } = require("devtools/client/shared/vendor/react");
const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
const dom = require("devtools/client/shared/vendor/react-dom-factories");
class PanelMenuEntry extends Component {
static get propTypes() {
return {
icon: PropTypes.string.isRequired,
id: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
selected: PropTypes.bool,
selectPanel: PropTypes.func.isRequired
};
}
constructor(props) {
super(props);
this.onClick = this.onClick.bind(this);
}
onClick() {
this.props.selectPanel(this.props.id);
}
render() {
let { id, name, icon, selected } = this.props;
// Here .category, .category-icon, .category-name classnames are used to
// apply common styles defined.
let className = "category" + (selected ? " selected" : "");
return dom.button({
"aria-selected": selected,
"aria-controls": id + "-panel",
className,
onClick: this.onClick,
tabIndex: "0",
role: "tab" },
dom.img({ className: "category-icon", src: icon, role: "presentation" }),
dom.div({ className: "category-name" }, name));
}
}
module.exports = PanelMenuEntry;