styled-link

This commit is contained in:
Sérgio Ramos 2017-02-08 21:35:09 +00:00
parent 1f2f8a6965
commit e46d22b7e3

View File

@ -4,6 +4,7 @@ const isString = require('lodash.isstring');
const match = require('../../shared/match');
const React = require('react');
const Styled = require('styled-components');
const ReactRouter = require('react-router-dom');
const {
base,
@ -23,6 +24,10 @@ const {
css
} = Styled;
const {
Link
} = ReactRouter;
const background = match({
secondary: base.white,
disabled: inactive.default
@ -141,6 +146,10 @@ const StyledAnchor = styled.a`
${style}
`;
const StyledLink = styled(Link)`
display: inline-block !important;
${style}
`;
const Button = (props) => {
// support FormattedMessage
@ -152,15 +161,27 @@ const Button = (props) => {
);
}
return props.href ? (
<StyledAnchor {...props} />
) : (
<StyledButton {...props} />
const {
href = '',
rr = false
} = props;
const Views = [
() => !href ? StyledButton : null,
() => !rr ? StyledAnchor : null,
() => StyledLink
];
const View = Views.reduce((sel, view) => sel ? sel : view(), null);
return (
<View {...props} />
);
};
Button.propTypes = {
href: React.PropTypes.string
href: React.PropTypes.string,
rr: React.PropTypes.bool
};
module.exports = Button;