UnsupportedBrowserItem.js (1831B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { 8 createFactory, 9 PureComponent, 10 } = require("resource://devtools/client/shared/vendor/react.mjs"); 11 const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js"); 12 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs"); 13 14 const BrowserIcon = createFactory( 15 require("resource://devtools/client/inspector/compatibility/components/BrowserIcon.js") 16 ); 17 const FluentReact = require("resource://devtools/client/shared/vendor/fluent-react.js"); 18 const Localized = createFactory(FluentReact.Localized); 19 20 const Types = require("resource://devtools/client/inspector/compatibility/types.js"); 21 22 class UnsupportedBrowserItem extends PureComponent { 23 static get propTypes() { 24 return { 25 id: Types.browser.id, 26 name: Types.browser.name, 27 unsupportedVersions: PropTypes.array.isRequired, 28 version: Types.browser.version, 29 }; 30 } 31 32 render() { 33 const { unsupportedVersions, id, name, version } = this.props; 34 35 return Localized( 36 { 37 id: "compatibility-issue-browsers-list", 38 $browsers: unsupportedVersions 39 .map( 40 ({ version: v, status }) => 41 `${name} ${v}${status ? ` (${status})` : ""}` 42 ) 43 .join("\n"), 44 attrs: { title: true }, 45 }, 46 dom.li( 47 { className: "compatibility-browser", "data-browser-id": id }, 48 BrowserIcon({ id, name }), 49 dom.span( 50 { 51 className: "compatibility-browser-version", 52 }, 53 version 54 ) 55 ) 56 ); 57 } 58 } 59 60 module.exports = UnsupportedBrowserItem;