UNPKG

@flexis/ui

Version:

Styleless React Components

54 lines 5.09 kB
import React, { PureComponent, Children, cloneElement } from 'react'; import PropTypes from 'prop-types'; import { AlignSideVariant, AlignSideValues } from '../common/types'; import { style, classes } from './Link.st.css'; const safeTargetBlankRel = 'noopener noreferrer'; let Link = /** @class */ (() => { class Link extends PureComponent { render() { const { className, elementRef, icon, flexIcon, alignIcon, rel, target, children, linkElement: LinkElement, linkElementCustomProps, ...props } = this.props; const iconOnly = !Children.count(children); const leftAligned = alignIcon === AlignSideVariant.Left; let linkIcon = null; if (typeof icon !== 'undefined') { linkIcon = cloneElement(icon, { className: style(classes.icon, { [`${alignIcon}Align`]: Boolean(alignIcon) && !iconOnly }, icon.props.className) }); } return (<LinkElement ref={elementRef} {...props} className={style(classes.root, { withIcon: Boolean(linkIcon), flexIcon }, className)} {...linkElementCustomProps} target={target} rel={target === '_blank' && typeof rel === 'undefined' ? safeTargetBlankRel : rel}> {linkIcon ? (<div className={classes.iconContainer}> {leftAligned && linkIcon} {!iconOnly && (<span>{children}</span>)} {!leftAligned && linkIcon} </div>) : children} </LinkElement>); } } 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 }; Link.defaultProps = { flexIcon: false, alignIcon: AlignSideVariant.Left, linkElement: 'a', linkElementCustomProps: {} }; return Link; })(); export default Link; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluay5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9MaW5rL0xpbmsudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBS2IsYUFBYSxFQUNiLFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFJbkMsT0FBTyxFQUVOLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ04sS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQW1CdkIsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztBQUVqRDtJQUFBLE1BQXFCLElBQUssU0FBUSxhQUFxQjtRQXFCdEQsTUFBTTtZQUVMLE1BQU0sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNULEdBQUcsRUFDSCxNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLHNCQUFzQixFQUN0QixHQUFHLEtBQUssRUFDUixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDZixNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN4RCxJQUFJLFFBQVEsR0FBc0IsSUFBSSxDQUFDO1lBRXZDLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO2dCQUNoQyxRQUFRLEdBQUcsWUFBWSxDQUN0QixJQUFJLEVBQ0o7b0JBQ0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO3dCQUM5QixDQUFDLEdBQUcsU0FBUyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRO3FCQUN0RCxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUN4QixDQUNELENBQUM7YUFDRjtZQUVELE9BQU8sQ0FDTixDQUFDLFdBQVcsQ0FDWCxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FDaEIsSUFBSSxLQUFLLENBQUMsQ0FDVixTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDOUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQzNCLFFBQVE7YUFDUixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQ2QsSUFBSSxzQkFBc0IsQ0FBQyxDQUMzQixNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDZixHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVc7Z0JBQ3JELENBQUMsQ0FBQyxrQkFBa0I7Z0JBQ3BCLENBQUMsQ0FBQyxHQUFHLENBQ0wsQ0FFRDtJQUFBLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUNYLENBQUMsR0FBRyxDQUNILFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FFakM7TUFBQSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQ3hCO01BQUEsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUNiLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ3ZCLENBQ0Q7TUFBQSxDQUFDLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FDMUI7S0FBQSxFQUFFLEdBQUcsQ0FBQyxDQUNOLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDYjtHQUFBLEVBQUUsV0FBVyxDQUFDLENBQ2QsQ0FBQztRQUNILENBQUM7O0lBN0VNLGNBQVMsR0FBRztRQUNsQixVQUFVLEVBQWMsU0FBUyxDQUFDLElBQUk7UUFDdEMsSUFBSSxFQUFvQixTQUFTLENBQUMsT0FBTztRQUN6QyxRQUFRLEVBQWdCLFNBQVMsQ0FBQyxJQUFJO1FBQ3RDLFNBQVMsRUFBZSxTQUFTLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUN4RCxHQUFHLEVBQXFCLFNBQVMsQ0FBQyxNQUFNO1FBQ3hDLE1BQU0sRUFBa0IsU0FBUyxDQUFDLE1BQU07UUFDeEMsUUFBUSxFQUFnQixTQUFTLENBQUMsSUFBSTtRQUN0QyxXQUFXLEVBQWEsU0FBUyxDQUFDLEdBQUc7UUFDckMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLE1BQU07S0FDeEMsQ0FBQztJQUVLLGlCQUFZLEdBQUc7UUFDckIsUUFBUSxFQUFnQixLQUFLO1FBQzdCLFNBQVMsRUFBZSxnQkFBZ0IsQ0FBQyxJQUFJO1FBQzdDLFdBQVcsRUFBYSxHQUFHO1FBQzNCLHNCQUFzQixFQUFFLEVBQUU7S0FDMUIsQ0FBQztJQTZESCxXQUFDO0tBQUE7ZUFoRm9CLElBQUkifQ==