aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-03-07 20:25:15 +0800
committerFabio Berger <me@fabioberger.com>2018-03-07 20:25:15 +0800
commit6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d (patch)
tree7d9030c062e22043cd49f27527c9d4537e41e618 /packages/website/ts
parent327cc307b35bf4a38c86f87c45718fd456025035 (diff)
downloaddexon-sol-tools-6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d.tar
dexon-sol-tools-6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d.tar.gz
dexon-sol-tools-6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d.tar.bz2
dexon-sol-tools-6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d.tar.lz
dexon-sol-tools-6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d.tar.xz
dexon-sol-tools-6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d.tar.zst
dexon-sol-tools-6f8a70834b72d678cd9d171d7bb0a3a2cfb4134d.zip
Add onSelectedVersion callback so it can be handled in any way the caller wishes
Diffstat (limited to 'packages/website/ts')
-rw-r--r--packages/website/ts/components/top_bar/top_bar.tsx2
-rw-r--r--packages/website/ts/pages/documentation/doc_page.tsx14
-rw-r--r--packages/website/ts/utils/utils.ts6
3 files changed, 22 insertions, 0 deletions
diff --git a/packages/website/ts/components/top_bar/top_bar.tsx b/packages/website/ts/components/top_bar/top_bar.tsx
index 2d6f2b235..29c68524c 100644
--- a/packages/website/ts/components/top_bar/top_bar.tsx
+++ b/packages/website/ts/components/top_bar/top_bar.tsx
@@ -38,6 +38,7 @@ interface TopBarProps {
docsInfo?: DocsInfo;
style?: React.CSSProperties;
isNightVersion?: boolean;
+ onVersionSelected?: (semver: string) => void;
}
interface TopBarState {
@@ -320,6 +321,7 @@ export class TopBar extends React.Component<TopBarProps, TopBarState> {
onMenuItemClick={this._onMenuButtonClick.bind(this)}
selectedVersion={this.props.docsVersion}
versions={this.props.availableDocVersions}
+ onVersionSelected={this.props.onVersionSelected}
/>
</div>
);
diff --git a/packages/website/ts/pages/documentation/doc_page.tsx b/packages/website/ts/pages/documentation/doc_page.tsx
index e0d7b272d..1281219c6 100644
--- a/packages/website/ts/pages/documentation/doc_page.tsx
+++ b/packages/website/ts/pages/documentation/doc_page.tsx
@@ -13,6 +13,7 @@ import { configs } from 'ts/utils/configs';
import { constants } from 'ts/utils/constants';
import { docUtils } from 'ts/utils/doc_utils';
import { Translate } from 'ts/utils/translate';
+import { utils } from 'ts/utils/utils';
const ZERO_EX_JS_VERSION_MISSING_TOPLEVEL_PATH = '0.32.4';
@@ -80,6 +81,7 @@ export class DocPage extends React.Component<DocPageProps, DocPageState> {
menuSubsectionsBySection={menuSubsectionsBySection}
docsInfo={this.props.docsInfo}
translate={this.props.translate}
+ onVersionSelected={this._onVersionSelected.bind(this)}
/>
<Documentation
selectedVersion={this.props.docsVersion}
@@ -89,6 +91,7 @@ export class DocPage extends React.Component<DocPageProps, DocPageState> {
sidebarHeader={<SidebarHeader title={this.props.docsInfo.displayName} />}
sourceUrl={sourceUrl}
topBarHeight={60}
+ onVersionSelected={this._onVersionSelected.bind(this)}
/>
</div>
);
@@ -141,4 +144,15 @@ export class DocPage extends React.Component<DocPageProps, DocPageState> {
const sourceUrl = `${url}/blob/${tagPrefix}%40${this.props.docsVersion}/packages${pkg}`;
return sourceUrl;
}
+ private _onVersionSelected(semver: string) {
+ let path = window.location.pathname;
+ const lastChar = path[path.length - 1];
+ if (_.isFinite(_.parseInt(lastChar))) {
+ const pathSections = path.split('/');
+ pathSections.pop();
+ path = pathSections.join('/');
+ }
+ const baseUrl = utils.getCurrentBaseUrl();
+ window.location.href = `${baseUrl}${path}/${semver}${window.location.hash}`;
+ }
}
diff --git a/packages/website/ts/utils/utils.ts b/packages/website/ts/utils/utils.ts
index d35f77e94..308b4bb5c 100644
--- a/packages/website/ts/utils/utils.ts
+++ b/packages/website/ts/utils/utils.ts
@@ -270,4 +270,10 @@ export const utils = {
window.onload = () => resolve();
});
},
+ getCurrentBaseUrl() {
+ const port = window.location.port;
+ const hasPort = !_.isUndefined(port);
+ const baseUrl = `https://${window.location.hostname}${hasPort ? `:${port}` : ''}`;
+ return baseUrl;
+ },
};