@wordpress/components
Version:
UI components for WordPress.
71 lines (55 loc) • 1.85 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ExternalLink = ExternalLink;
exports.default = void 0;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classnames = _interopRequireDefault(require("classnames"));
var _lodash = require("lodash");
var _i18n = require("@wordpress/i18n");
var _icons = require("@wordpress/icons");
var _visuallyHidden = _interopRequireDefault(require("../visually-hidden"));
var _externalLinkStyles = require("./styles/external-link-styles");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function ExternalLink({
href,
children,
className,
rel = '',
...additionalProps
}, ref) {
rel = (0, _lodash.uniq)((0, _lodash.compact)([...rel.split(' '), 'external', 'noreferrer', 'noopener'])).join(' ');
const classes = (0, _classnames.default)('components-external-link', className);
return (
/* eslint-disable react/jsx-no-target-blank */
(0, _element.createElement)("a", (0, _extends2.default)({}, additionalProps, {
className: classes,
href: href,
target: "_blank",
rel: rel,
ref: ref
}), children, (0, _element.createElement)(_visuallyHidden.default, {
as: "span"
},
/* translators: accessibility text */
(0, _i18n.__)('(opens in a new tab)')), (0, _element.createElement)(_externalLinkStyles.StyledIcon, {
icon: _icons.external,
className: "components-external-link__icon"
}))
/* eslint-enable react/jsx-no-target-blank */
);
}
var _default = (0, _element.forwardRef)(ExternalLink);
exports.default = _default;
//# sourceMappingURL=index.js.map