aboutsummaryrefslogtreecommitdiffstats
path: root/packages/instant/src/components/ui
diff options
context:
space:
mode:
authorfragosti <francesco.agosti93@gmail.com>2018-11-10 07:08:01 +0800
committerfragosti <francesco.agosti93@gmail.com>2018-11-10 07:08:01 +0800
commit7249cc7b495f370f7ec5672ca36456dd4b6779de (patch)
tree52c5e52210a584bd00235253f9f9ef05d418e7ad /packages/instant/src/components/ui
parentb5988277087f0ee39109972d73ca94368d6dd4b9 (diff)
downloaddexon-sol-tools-7249cc7b495f370f7ec5672ca36456dd4b6779de.tar.gz
dexon-sol-tools-7249cc7b495f370f7ec5672ca36456dd4b6779de.tar.zst
dexon-sol-tools-7249cc7b495f370f7ec5672ca36456dd4b6779de.zip
feat: allow href prop on button
Diffstat (limited to 'packages/instant/src/components/ui')
-rw-r--r--packages/instant/src/components/ui/button.tsx29
1 files changed, 23 insertions, 6 deletions
diff --git a/packages/instant/src/components/ui/button.tsx b/packages/instant/src/components/ui/button.tsx
index d0b1bb508..479ef6c77 100644
--- a/packages/instant/src/components/ui/button.tsx
+++ b/packages/instant/src/components/ui/button.tsx
@@ -3,6 +3,8 @@ import * as React from 'react';
import { ColorOption, styled } from '../../style/theme';
+export type ButtonOnClickHandler = (event: React.MouseEvent<HTMLElement>) => void;
+
export interface ButtonProps {
backgroundColor?: ColorOption;
borderColor?: ColorOption;
@@ -12,15 +14,30 @@ export interface ButtonProps {
padding?: string;
type?: string;
isDisabled?: boolean;
- onClick?: (event: React.MouseEvent<HTMLElement>) => void;
+ href?: string;
+ onClick?: ButtonOnClickHandler;
className?: string;
}
-const PlainButton: React.StatelessComponent<ButtonProps> = ({ children, isDisabled, onClick, type, className }) => (
- <button type={type} className={className} onClick={isDisabled ? undefined : onClick} disabled={isDisabled}>
- {children}
- </button>
-);
+const createHrefOnClick = (href: string) => () => {
+ window.open(href, '_blank');
+};
+
+const PlainButton: React.StatelessComponent<ButtonProps> = ({
+ children,
+ isDisabled,
+ onClick,
+ href,
+ type,
+ className,
+}) => {
+ const computedOnClick = isDisabled ? undefined : href ? createHrefOnClick(href) : onClick;
+ return (
+ <button type={type} className={className} onClick={computedOnClick} disabled={isDisabled}>
+ {children}
+ </button>
+ );
+};
const darkenOnHoverAmount = 0.1;
const darkenOnActiveAmount = 0.2;