diff --git a/lib/reps/tree-view.js b/lib/reps/tree-view.js index dd4176a..b7fe320 100644 --- a/lib/reps/tree-view.js +++ b/lib/reps/tree-view.js @@ -6,7 +6,7 @@ define(function(require, exports, module) { const React = require("react"); const { Reps } = require("reps/repository"); const { isCropped } = require("reps/string"); -const { TR, TD, SPAN, TABLE, TBODY } = Reps.DOM; +const { A, TR, TD, SPAN, TABLE, TBODY } = Reps.DOM; /** * @template This component represents a tree view with @@ -328,6 +328,11 @@ var TreeRow = React.createFactory(React.createClass({ TAG = Reps.getRep(value); } + var isLink = false; + if (typeof value === 'string' && /^https?:\/\/.+$/.test(value)) { + isLink = true; + } + return ( TR({className: classNames.join(" "), onClick: this.onClick}, TD({className: "memberLabelCell", style: rowStyle}, @@ -335,7 +340,13 @@ var TreeRow = React.createFactory(React.createClass({ name) ), TD({className: "memberValueCell"}, - SPAN({}, + // If the value is a link, render as an A tag that opens + // in a new window + (isLink ? A : SPAN)( + isLink ? { + href: value, + target: '_blank' + } : {}, TAG({ object: value, mode: this.props.mode,