Also fixes a slight issue in firebug theme that made the text slide of 1 px down when selecting a tab. MozReview-Commit-ID: KNm9Xf21p2D
65 lines
1.9 KiB
JavaScript
65 lines
1.9 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 {DOM, createClass} = require("devtools/client/shared/vendor/react");
|
|
const {img, button, span} = DOM;
|
|
|
|
module.exports = createClass({
|
|
displayName: "ToolboxTab",
|
|
|
|
renderIcon(definition, isHighlighted) {
|
|
const {icon, highlightedicon} = definition;
|
|
if (!icon) {
|
|
return [];
|
|
}
|
|
return [
|
|
img({
|
|
className: "default-icon",
|
|
src: icon
|
|
}),
|
|
img({
|
|
className: "highlighted-icon",
|
|
src: highlightedicon || icon
|
|
})
|
|
];
|
|
},
|
|
|
|
render() {
|
|
const {panelDefinition, currentToolId, highlightedTool, selectTool,
|
|
focusedButton, focusButton} = this.props;
|
|
const {id, tooltip, label, iconOnly} = panelDefinition;
|
|
const isHighlighted = id === currentToolId;
|
|
|
|
const className = [
|
|
"devtools-tab",
|
|
panelDefinition.invertIconForLightTheme || panelDefinition.invertIconForDarkTheme
|
|
? "icon-invertable"
|
|
: "",
|
|
panelDefinition.invertIconForLightTheme ? "icon-invertable-light-theme" : "",
|
|
panelDefinition.invertIconForDarkTheme ? "icon-invertable-dark-theme" : "",
|
|
currentToolId === id ? "selected" : "",
|
|
highlightedTool === id ? "highlighted" : "",
|
|
iconOnly ? "devtools-tab-icon-only" : ""
|
|
].join(" ");
|
|
|
|
return button(
|
|
{
|
|
className,
|
|
id: `toolbox-tab-${id}`,
|
|
"data-id": id,
|
|
title: tooltip,
|
|
type: "button",
|
|
tabIndex: focusedButton === id ? "0" : "-1",
|
|
onFocus: () => focusButton(id),
|
|
onClick: () => selectTool(id),
|
|
},
|
|
...this.renderIcon(panelDefinition, isHighlighted),
|
|
iconOnly ? null : span({
|
|
className: "devtools-tab-label"
|
|
}, label)
|
|
);
|
|
}
|
|
});
|