aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/components/ui
diff options
context:
space:
mode:
authorBrandon Millman <brandon@0xproject.com>2018-06-19 03:11:59 +0800
committerGitHub <noreply@github.com>2018-06-19 03:11:59 +0800
commit3f02631b98368503718a1c1977e7f83220c284a2 (patch)
tree25079232ba59f09dfaf52ef7940edc40b156337f /packages/website/ts/components/ui
parenta3ca3ed33fcf51fbcc236d5b8238648873085630 (diff)
parentda46eefe2eea9507ae12ed678b15047f1c74366f (diff)
downloaddexon-sol-tools-3f02631b98368503718a1c1977e7f83220c284a2.tar
dexon-sol-tools-3f02631b98368503718a1c1977e7f83220c284a2.tar.gz
dexon-sol-tools-3f02631b98368503718a1c1977e7f83220c284a2.tar.bz2
dexon-sol-tools-3f02631b98368503718a1c1977e7f83220c284a2.tar.lz
dexon-sol-tools-3f02631b98368503718a1c1977e7f83220c284a2.tar.xz
dexon-sol-tools-3f02631b98368503718a1c1977e7f83220c284a2.tar.zst
dexon-sol-tools-3f02631b98368503718a1c1977e7f83220c284a2.zip
Merge pull request #712 from 0xProject/feature/website/portal-facelift
Change relayer grid tile to use logos and primary colors
Diffstat (limited to 'packages/website/ts/components/ui')
-rw-r--r--packages/website/ts/components/ui/image.tsx37
1 files changed, 37 insertions, 0 deletions
diff --git a/packages/website/ts/components/ui/image.tsx b/packages/website/ts/components/ui/image.tsx
new file mode 100644
index 000000000..0958d2e5e
--- /dev/null
+++ b/packages/website/ts/components/ui/image.tsx
@@ -0,0 +1,37 @@
+import * as _ from 'lodash';
+import * as React from 'react';
+
+export interface ImageProps {
+ className?: string;
+ src?: string;
+ fallbackSrc?: string;
+ height?: string;
+}
+interface ImageState {
+ imageLoadFailed: boolean;
+}
+export class Image extends React.Component<ImageProps, ImageState> {
+ constructor(props: ImageProps) {
+ super(props);
+ this.state = {
+ imageLoadFailed: false,
+ };
+ }
+ public render(): React.ReactNode {
+ const src =
+ this.state.imageLoadFailed || _.isUndefined(this.props.src) ? this.props.fallbackSrc : this.props.src;
+ return (
+ <img
+ className={this.props.className}
+ onError={this._onError.bind(this)}
+ src={src}
+ height={this.props.height}
+ />
+ );
+ }
+ private _onError(): void {
+ this.setState({
+ imageLoadFailed: true,
+ });
+ }
+}