aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/components/inputs/allowance_state_toggle.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/website/ts/components/inputs/allowance_state_toggle.tsx')
-rw-r--r--packages/website/ts/components/inputs/allowance_state_toggle.tsx52
1 files changed, 48 insertions, 4 deletions
diff --git a/packages/website/ts/components/inputs/allowance_state_toggle.tsx b/packages/website/ts/components/inputs/allowance_state_toggle.tsx
index 4a9c99ca7..8908e457b 100644
--- a/packages/website/ts/components/inputs/allowance_state_toggle.tsx
+++ b/packages/website/ts/components/inputs/allowance_state_toggle.tsx
@@ -1,10 +1,54 @@
+import { colors } from '@0xproject/react-shared';
import * as React from 'react';
-import { AllowanceStateView } from 'ts/components/ui/allowance_state_view';
+import { AllowanceStateView, AllowanceState } from 'ts/components/ui/allowance_state_view';
+import { Token, TokenState } from 'ts/types';
+import ReactTooltip = require('react-tooltip');
export interface AllowanceStateToggleProps {}
+export interface AllowanceStateToggleState {
+ allowanceState: AllowanceState;
+ token?: Token;
+ tokenState?: TokenState;
+}
+
+const TOOLTIP_ID = 'AllowanceStateToggleTooltip';
+
const flip = () => Math.random() < 0.5;
-export const AllowanceStateToggle: React.StatelessComponent<AllowanceStateToggleProps> = () => (
- <AllowanceStateView allowanceState={flip() ? 'locked' : 'loading'} />
-);
+export class AllowanceStateToggle extends React.Component<AllowanceStateToggleProps, AllowanceStateToggleState> {
+ public state = {
+ allowanceState: flip() ? AllowanceState.Loading : AllowanceState.Locked,
+ };
+ public render(): React.ReactNode {
+ return (
+ <div>
+ <ReactTooltip id={TOOLTIP_ID}>{this._getTooltipContent()}</ReactTooltip>
+ <div data-tip={true} data-for={TOOLTIP_ID} data-place="right" data-effect="solid">
+ <AllowanceStateView allowanceState={this.state.allowanceState} />
+ </div>
+ </div>
+ );
+ }
+ private _getTooltipContent(): React.ReactNode {
+ switch (this.state.allowanceState) {
+ case AllowanceState.Loading:
+ // TODO: support both awaiting confirmation and awaiting transaction.
+ return 'Please confirm in MetaMask';
+ case AllowanceState.Locked:
+ return (
+ <span>
+ Click to enable <b>WETH</b> for trading
+ </span>
+ );
+ case AllowanceState.Unlocked:
+ return (
+ <span>
+ <b>WETH</b> is available for trading
+ </span>
+ );
+ default:
+ return null;
+ }
+ }
+}