aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/pages
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-11-27 15:55:01 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-11-29 02:59:54 +0800
commitf83c4c51c7bf4319da2833f4068e5804476be2a2 (patch)
tree9cc3c743f6c53d2bcce00a7f601df5d6d44acd9e /packages/website/ts/pages
parent7a726e2740b8cbc885229ed377ef5fc89502301d (diff)
downloaddexon-sol-tools-f83c4c51c7bf4319da2833f4068e5804476be2a2.tar
dexon-sol-tools-f83c4c51c7bf4319da2833f4068e5804476be2a2.tar.gz
dexon-sol-tools-f83c4c51c7bf4319da2833f4068e5804476be2a2.tar.bz2
dexon-sol-tools-f83c4c51c7bf4319da2833f4068e5804476be2a2.tar.lz
dexon-sol-tools-f83c4c51c7bf4319da2833f4068e5804476be2a2.tar.xz
dexon-sol-tools-f83c4c51c7bf4319da2833f4068e5804476be2a2.tar.zst
dexon-sol-tools-f83c4c51c7bf4319da2833f4068e5804476be2a2.zip
feat(website): add header and footer to instant page
Diffstat (limited to 'packages/website/ts/pages')
-rw-r--r--packages/website/ts/pages/instant/instant.tsx47
1 files changed, 46 insertions, 1 deletions
diff --git a/packages/website/ts/pages/instant/instant.tsx b/packages/website/ts/pages/instant/instant.tsx
index 0ecf39254..ae91d7094 100644
--- a/packages/website/ts/pages/instant/instant.tsx
+++ b/packages/website/ts/pages/instant/instant.tsx
@@ -1,12 +1,57 @@
+import * as _ from 'lodash';
import * as React from 'react';
+import * as DocumentTitle from 'react-document-title';
+import { Footer } from 'ts/components/footer';
+import { MetaTags } from 'ts/components/meta_tags';
+import { TopBar } from 'ts/components/top_bar/top_bar';
+import { Container } from 'ts/components/ui/container';
import { Dispatcher } from 'ts/redux/dispatcher';
+import { ScreenWidths } from 'ts/types';
import { Translate } from 'ts/utils/translate';
+import { utils } from 'ts/utils/utils';
export interface InstantProps {
location: Location;
translate: Translate;
dispatcher: Dispatcher;
+ screenWidth: ScreenWidths;
}
-export const Instant: React.StatelessComponent<InstantProps> = () => <div />;
+export interface InstantState {}
+
+const THROTTLE_TIMEOUT = 100;
+const DOCUMENT_TITLE = 'Instant';
+const DOCUMENT_DESCRIPTION = 'Instant';
+
+export class Instant extends React.Component<InstantProps, InstantState> {
+ // TODO: consolidate this small screen scaffolding into one place (its being used in portal and docs as well)
+ private readonly _throttledScreenWidthUpdate: () => void;
+ public constructor(props: InstantProps) {
+ super(props);
+ this._throttledScreenWidthUpdate = _.throttle(this._updateScreenWidth.bind(this), THROTTLE_TIMEOUT);
+ }
+ public componentDidMount(): void {
+ window.addEventListener('resize', this._throttledScreenWidthUpdate);
+ window.scrollTo(0, 0);
+ }
+ public render(): React.ReactNode {
+ return (
+ <Container overflowX="hidden">
+ <MetaTags title={DOCUMENT_TITLE} description={DOCUMENT_DESCRIPTION} />
+ <DocumentTitle title={DOCUMENT_TITLE} />
+ <TopBar
+ blockchainIsLoaded={false}
+ location={this.props.location}
+ style={{ position: 'relative' }}
+ translate={this.props.translate}
+ />
+ <Footer translate={this.props.translate} dispatcher={this.props.dispatcher} />
+ </Container>
+ );
+ }
+ private _updateScreenWidth(): void {
+ const newScreenWidth = utils.getScreenWidth();
+ this.props.dispatcher.updateScreenWidth(newScreenWidth);
+ }
+}