@flexis/ui
Version:
Styleless React Components
97 lines (87 loc) • 6.6 kB
JavaScript
import _extends from "@babel/runtime-corejs3/helpers/extends";
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/objectWithoutProperties";
import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
import _createClass from "@babel/runtime-corejs3/helpers/createClass";
import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime-corejs3/helpers/getPrototypeOf";
import _inherits from "@babel/runtime-corejs3/helpers/inherits";
import React from 'react';
var _createElement = React.createElement;
var PureComponent = React.PureComponent,
Children = React.Children,
cloneElement = React.cloneElement;
import PropTypes from 'prop-types';
import { AlignSideVariant, AlignSideValues } from '../common/types';
import { style, classes } from './Link.st.css';
var safeTargetBlankRel = 'noopener noreferrer';
var Link =
/** @class */
function () {
var Link = /*#__PURE__*/function (_PureComponent) {
_inherits(Link, _PureComponent);
function Link() {
_classCallCheck(this, Link);
return _possibleConstructorReturn(this, _getPrototypeOf(Link).apply(this, arguments));
}
_createClass(Link, [{
key: "render",
value: function render() {
var _this$props = this.props,
className = _this$props.className,
elementRef = _this$props.elementRef,
icon = _this$props.icon,
flexIcon = _this$props.flexIcon,
alignIcon = _this$props.alignIcon,
rel = _this$props.rel,
target = _this$props.target,
children = _this$props.children,
LinkElement = _this$props.linkElement,
linkElementCustomProps = _this$props.linkElementCustomProps,
props = _objectWithoutProperties(_this$props, ["className", "elementRef", "icon", "flexIcon", "alignIcon", "rel", "target", "children", "linkElement", "linkElementCustomProps"]);
var iconOnly = !Children.count(children);
var leftAligned = alignIcon === AlignSideVariant.Left;
var linkIcon = null;
if (typeof icon !== 'undefined') {
linkIcon = cloneElement(icon, {
className: style(classes.icon, _defineProperty({}, "".concat(alignIcon, "Align"), Boolean(alignIcon) && !iconOnly), icon.props.className)
});
}
return _createElement(LinkElement, _extends({
ref: elementRef
}, props, {
className: style(classes.root, {
withIcon: Boolean(linkIcon),
flexIcon: flexIcon
}, className)
}, linkElementCustomProps, {
target: target,
rel: target === '_blank' && typeof rel === 'undefined' ? safeTargetBlankRel : rel
}), linkIcon ? _createElement("div", {
className: classes.iconContainer
}, leftAligned && linkIcon, !iconOnly && _createElement("span", null, children), !leftAligned && linkIcon) : children);
}
}]);
return Link;
}(PureComponent);
process.env.NODE_ENV !== "production" ? Link.propTypes = {
elementRef: PropTypes.func,
icon: PropTypes.element,
flexIcon: PropTypes.bool,
alignIcon: PropTypes.oneOf(AlignSideValues),
rel: PropTypes.string,
target: PropTypes.string,
children: PropTypes.node,
linkElement: PropTypes.any,
linkElementCustomProps: PropTypes.object
} : void 0;
Link.defaultProps = {
flexIcon: false,
alignIcon: AlignSideVariant.Left,
linkElement: 'a',
linkElementCustomProps: {}
};
return Link;
}();
export default Link;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0xpbmsvTGluay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPLEtBQVAsTUFRTyxPQVJQOzs7OztBQVNBLE9BQU8sU0FBUCxNQUFzQixZQUF0QjtBQUlBLFNBRUMsZ0JBRkQsRUFHQyxlQUhELFFBSU8saUJBSlA7QUFLQSxTQUNDLEtBREQsRUFFQyxPQUZELFFBR08sZUFIUDtBQXNCQSxJQUFNLGtCQUFrQixHQUFHLHFCQUEzQjs7QUFFQSxJQUFBLElBQUE7QUFBQTtBQUFBLFlBQUE7QUFBQSxNQUFxQixJQUFyQjtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsK0JBcUJPO0FBQUEsMEJBY0QsS0FBSyxLQWRKO0FBQUEsWUFHSixTQUhJLGVBR0osU0FISTtBQUFBLFlBSUosVUFKSSxlQUlKLFVBSkk7QUFBQSxZQUtKLElBTEksZUFLSixJQUxJO0FBQUEsWUFNSixRQU5JLGVBTUosUUFOSTtBQUFBLFlBT0osU0FQSSxlQU9KLFNBUEk7QUFBQSxZQVFKLEdBUkksZUFRSixHQVJJO0FBQUEsWUFTSixNQVRJLGVBU0osTUFUSTtBQUFBLFlBVUosUUFWSSxlQVVKLFFBVkk7QUFBQSxZQVdTLFdBWFQsZUFXSixXQVhJO0FBQUEsWUFZSixzQkFaSSxlQVlKLHNCQVpJO0FBQUEsWUFhRCxLQWJDOztBQWVMLFlBQU0sUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQVQsQ0FBZSxRQUFmLENBQWxCO0FBQ0EsWUFBTSxXQUFXLEdBQUcsU0FBUyxLQUFLLGdCQUFnQixDQUFDLElBQW5EO0FBQ0EsWUFBSSxRQUFRLEdBQXNCLElBQWxDOztBQUVBLFlBQUksT0FBTyxJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO0FBQ2hDLFVBQUEsUUFBUSxHQUFHLFlBQVksQ0FDdEIsSUFEc0IsRUFFdEI7QUFDQyxZQUFBLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQVQsZ0NBQ1gsU0FEVyxZQUNRLE9BQU8sQ0FBQyxTQUFELENBQVAsSUFBc0IsQ0FBQyxRQUQvQixHQUViLElBQUksQ0FBQyxLQUFMLENBQVcsU0FGRTtBQURqQixXQUZzQixDQUF2QjtBQVFBOztBQUVELGVBQ0MsZUFBQyxXQUFEO0FBQ0MsVUFBQSxHQUFHLEVBQUU7QUFETixXQUVLLEtBRkw7QUFHQyxVQUFBLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQVQsRUFBZTtBQUM5QixZQUFBLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBRCxDQURhO0FBRTlCLFlBQUEsUUFBUSxFQUFSO0FBRjhCLFdBQWYsRUFHYixTQUhhO0FBSGpCLFdBT0ssc0JBUEw7QUFRQyxVQUFBLE1BQU0sRUFBRSxNQVJUO0FBU0MsVUFBQSxHQUFHLEVBQUUsTUFBTSxLQUFLLFFBQVgsSUFBdUIsT0FBTyxHQUFQLEtBQWUsV0FBdEMsR0FDRixrQkFERSxHQUVGO0FBWEosWUFjRSxRQUFRLEdBQ1I7QUFDQyxVQUFBLFNBQVMsRUFBRSxPQUFPLENBQUM7QUFEcEIsV0FHRSxXQUFXLElBQUksUUFIakIsRUFJRSxDQUFDLFFBQUQsSUFDQSw2QkFBTyxRQUFQLENBTEYsRUFPRSxDQUFDLFdBQUQsSUFBZ0IsUUFQbEIsQ0FEUSxHQVVMLFFBeEJMLENBREQ7QUE0QkE7QUEvRUY7O0FBQUE7QUFBQSxJQUFrQyxhQUFsQzs7QUFFUSwwQ0FBQSxJQUFBLENBQUEsU0FBQSxHQUFZO0FBQ2xCLElBQUEsVUFBVSxFQUFjLFNBQVMsQ0FBQyxJQURoQjtBQUVsQixJQUFBLElBQUksRUFBb0IsU0FBUyxDQUFDLE9BRmhCO0FBR2xCLElBQUEsUUFBUSxFQUFnQixTQUFTLENBQUMsSUFIaEI7QUFJbEIsSUFBQSxTQUFTLEVBQWUsU0FBUyxDQUFDLEtBQVYsQ0FBZ0IsZUFBaEIsQ0FKTjtBQUtsQixJQUFBLEdBQUcsRUFBcUIsU0FBUyxDQUFDLE1BTGhCO0FBTWxCLElBQUEsTUFBTSxFQUFrQixTQUFTLENBQUMsTUFOaEI7QUFPbEIsSUFBQSxRQUFRLEVBQWdCLFNBQVMsQ0FBQyxJQVBoQjtBQVFsQixJQUFBLFdBQVcsRUFBYSxTQUFTLENBQUMsR0FSaEI7QUFTbEIsSUFBQSxzQkFBc0IsRUFBRSxTQUFTLENBQUM7QUFUaEIsR0FBWjtBQVlBLEVBQUEsSUFBQSxDQUFBLFlBQUEsR0FBZTtBQUNyQixJQUFBLFFBQVEsRUFBZ0IsS0FESDtBQUVyQixJQUFBLFNBQVMsRUFBZSxnQkFBZ0IsQ0FBQyxJQUZwQjtBQUdyQixJQUFBLFdBQVcsRUFBYSxHQUhIO0FBSXJCLElBQUEsc0JBQXNCLEVBQUU7QUFKSCxHQUFmO0FBa0VSLFNBQUEsSUFBQTtBQUFDLENBaEZELEVBQUE7O2VBQXFCLEkiLCJzb3VyY2VSb290IjoiIn0=