forked from mirrors/gecko-dev
		
	 6369cc4e7c
			
		
	
	
		6369cc4e7c
		
	
	
	
	
		
			
			Differential Revision: https://phabricator.services.mozilla.com/D43149 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.3 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";
 | |
| 
 | |
| // Make this available to both AMD and CJS environments
 | |
| define(function(require, exports, module) {
 | |
|   const { Component } = require("devtools/client/shared/vendor/react");
 | |
|   const dom = require("devtools/client/shared/vendor/react-dom-factories");
 | |
|   const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
 | |
| 
 | |
|   /**
 | |
|    * Render the default cell used for toggle buttons
 | |
|    */
 | |
|   class LabelCell extends Component {
 | |
|     // See the TreeView component for details related
 | |
|     // to the 'member' object.
 | |
|     static get propTypes() {
 | |
|       return {
 | |
|         id: PropTypes.string.isRequired,
 | |
|         title: PropTypes.string,
 | |
|         member: PropTypes.object.isRequired,
 | |
|         renderSuffix: PropTypes.func,
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     render() {
 | |
|       const id = this.props.id;
 | |
|       const title = this.props.title;
 | |
|       const member = this.props.member;
 | |
|       const level = member.level || 0;
 | |
|       const renderSuffix = this.props.renderSuffix;
 | |
| 
 | |
|       const iconClassList = ["treeIcon"];
 | |
|       if (member.hasChildren && member.loading) {
 | |
|         iconClassList.push("devtools-throbber");
 | |
|       } else if (member.hasChildren) {
 | |
|         iconClassList.push("theme-twisty");
 | |
|       }
 | |
|       if (member.open) {
 | |
|         iconClassList.push("open");
 | |
|       }
 | |
| 
 | |
|       return dom.td(
 | |
|         {
 | |
|           className: "treeLabelCell",
 | |
|           title,
 | |
|           style: {
 | |
|             // Compute indentation dynamically. The deeper the item is
 | |
|             // inside the hierarchy, the bigger is the left padding.
 | |
|             "--tree-label-cell-indent": `${level * 16}px`,
 | |
|           },
 | |
|           key: "default",
 | |
|           role: "presentation",
 | |
|         },
 | |
|         dom.span({
 | |
|           className: iconClassList.join(" "),
 | |
|           role: "presentation",
 | |
|         }),
 | |
|         dom.span(
 | |
|           {
 | |
|             className: "treeLabel " + member.type + "Label",
 | |
|             title,
 | |
|             "aria-labelledby": id,
 | |
|             "data-level": level,
 | |
|           },
 | |
|           member.name
 | |
|         ),
 | |
|         renderSuffix && renderSuffix(member)
 | |
|       );
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   // Exports from this module
 | |
|   module.exports = LabelCell;
 | |
| });
 |