backpack-ui
Version:
Lonely Planet's Components
78 lines (57 loc) • 2.15 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require("babel-runtime/helpers/extends");
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require("babel-runtime/helpers/objectWithoutProperties");
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _reactRouter = require("react-router");
var _createQAHook = require("../../utils/createQAHook");
var _createQAHook2 = _interopRequireDefault(_createQAHook);
var _validReactAttributes = require("../../utils/validReactAttributes");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var isExternal = function isExternal(url) {
return (/^(http|https):\/\//.test(url || "")
);
};
var Link = function Link(_ref) {
var to = _ref.to,
onClick = _ref.onClick,
children = _ref.children,
qaHook = _ref.qaHook,
rest = (0, _objectWithoutProperties3.default)(_ref, ["to", "onClick", "children", "qaHook"]);
var sanitizedProps = (0, _validReactAttributes.validReactAttributes)(rest);
return isExternal(to) || !to && onClick ? _react2.default.createElement(
"a",
(0, _extends3.default)({
href: to,
"data-testid": qaHook ? (0, _createQAHook2.default)("" + qaHook, "external-link", "link") : null,
onClick: onClick
}, sanitizedProps),
children
) : _react2.default.createElement(
_reactRouter.Link,
(0, _extends3.default)({
to: to,
onClick: onClick
}, sanitizedProps),
children
);
};
Link.propTypes = {
to: _propTypes2.default.string,
onClick: _propTypes2.default.func,
children: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node, _propTypes2.default.element]),
qaHook: _propTypes2.default.string,
className: _propTypes2.default.string
};
Link.defaultProps = {
qaHook: null,
className: ""
};
exports.default = Link;