Show token name dynamically in tooltip

This commit is contained in:
fragosti
2018-07-20 10:14:17 -07:00
parent 3bf12a98a7
commit b28cc6d7d3
4 changed files with 19 additions and 13 deletions

View File

@@ -2,18 +2,18 @@ import { colors } from '@0xproject/react-shared';
import * as React from 'react';
import { AllowanceStateView, AllowanceState } from 'ts/components/ui/allowance_state_view';
import { Token, TokenState } from 'ts/types';
import { Container } from 'ts/components/ui/container';
import ReactTooltip = require('react-tooltip');
export interface AllowanceStateToggleProps {}
export interface AllowanceStateToggleProps {
token: Token;
tokenState: TokenState;
}
export interface AllowanceStateToggleState {
allowanceState: AllowanceState;
token?: Token;
tokenState?: TokenState;
}
const TOOLTIP_ID = 'AllowanceStateToggleTooltip';
const flip = () => Math.random() < 0.5;
export class AllowanceStateToggle extends React.Component<AllowanceStateToggleProps, AllowanceStateToggleState> {
@@ -21,16 +21,18 @@ export class AllowanceStateToggle extends React.Component<AllowanceStateTogglePr
allowanceState: flip() ? AllowanceState.Loading : AllowanceState.Locked,
};
public render(): React.ReactNode {
const tooltipId = `tooltip-id-${this.props.token.symbol}`;
return (
<div>
<ReactTooltip id={TOOLTIP_ID}>{this._getTooltipContent()}</ReactTooltip>
<div data-tip={true} data-for={TOOLTIP_ID} data-place="right" data-effect="solid">
<Container cursor="pointer">
<ReactTooltip id={tooltipId}>{this._getTooltipContent()}</ReactTooltip>
<div data-tip={true} data-for={tooltipId} data-place="right" data-effect="solid">
<AllowanceStateView allowanceState={this.state.allowanceState} />
</div>
</div>
</Container>
);
}
private _getTooltipContent(): React.ReactNode {
const symbol = this.props.token.symbol;
switch (this.state.allowanceState) {
case AllowanceState.Loading:
// TODO: support both awaiting confirmation and awaiting transaction.
@@ -38,13 +40,13 @@ export class AllowanceStateToggle extends React.Component<AllowanceStateTogglePr
case AllowanceState.Locked:
return (
<span>
Click to enable <b>WETH</b> for trading
Click to enable <b>{symbol}</b> for trading
</span>
);
case AllowanceState.Unlocked:
return (
<span>
<b>WETH</b> is available for trading
<b>{symbol}</b> is available for trading
</span>
);
default:

View File

@@ -31,6 +31,7 @@ export interface ContainerProps {
bottom?: string;
zIndex?: number;
Tag?: ContainerTag;
cursor?: string;
}
export const Container: React.StatelessComponent<ContainerProps> = props => {

View File

@@ -422,7 +422,7 @@ export class Wallet extends React.Component<WalletProps, WalletState> {
// refetchTokenStateAsync={async () => this.props.refetchTokenStateAsync(config.token.address)}
// />
// );
return <AllowanceStateToggle />;
return <AllowanceStateToggle token={config.token} tokenState={config.tokenState} />;
}
private _renderAmount(
amount: BigNumber,

View File

@@ -8,7 +8,10 @@ import { BalanceErrs, Token, TokenState } from 'ts/types';
import { AllowanceStateToggle as AllowanceStateToggleComponent } from 'ts/components/inputs/allowance_state_toggle';
import { Dispatcher } from 'ts/redux/dispatcher';
interface AllowanceStateToggleProps {}
interface AllowanceStateToggleProps {
token: Token;
tokenState: TokenState;
}
interface ConnectedState {}