|
|
|
@ -1,21 +1,26 @@ |
|
|
|
|
import React from 'react' |
|
|
|
|
import React, { useContext } from 'react' |
|
|
|
|
import PropTypes from 'prop-types' |
|
|
|
|
import { I18nContext } from '../../../contexts/i18n' |
|
|
|
|
import InfoTooltip from '../../../components/ui/info-tooltip' |
|
|
|
|
|
|
|
|
|
export default function FeeCard ({ |
|
|
|
|
feeRowText, |
|
|
|
|
primaryFee, |
|
|
|
|
secondaryFee, |
|
|
|
|
thirdRow, |
|
|
|
|
maxFeeRow, |
|
|
|
|
hideTokenApprovalRow, |
|
|
|
|
onFeeCardMaxRowClick, |
|
|
|
|
tokenApprovalTextComponent, |
|
|
|
|
tokenApprovalSourceTokenSymbol, |
|
|
|
|
onTokenApprovalClick, |
|
|
|
|
}) { |
|
|
|
|
const t = useContext(I18nContext) |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<div className="fee-card"> |
|
|
|
|
<div className="fee-card__main"> |
|
|
|
|
<div className="fee-card__row-header"> |
|
|
|
|
<div> |
|
|
|
|
<div className="fee-card__row-header-text--bold"> |
|
|
|
|
{feeRowText} |
|
|
|
|
{t('swapEstimatedNetworkFee')} |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div> |
|
|
|
@ -29,18 +34,18 @@ export default function FeeCard ({ |
|
|
|
|
)} |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div className="fee-card__row-header" onClick={() => maxFeeRow.onClick()}> |
|
|
|
|
<div className="fee-card__row-header" onClick={() => onFeeCardMaxRowClick()}> |
|
|
|
|
<div> |
|
|
|
|
<div className="fee-card__row-header-text"> |
|
|
|
|
{maxFeeRow.text} |
|
|
|
|
{t('swapMaxNetworkFees')} |
|
|
|
|
</div> |
|
|
|
|
<div className="fee-card__link"> |
|
|
|
|
{maxFeeRow.linkText} |
|
|
|
|
{t('edit')} |
|
|
|
|
</div> |
|
|
|
|
<div className="fee-card__row-label"> |
|
|
|
|
<InfoTooltip |
|
|
|
|
position="top" |
|
|
|
|
contentText={maxFeeRow.tooltipText} |
|
|
|
|
contentText={t('swapMaxNetworkFeeInfo')} |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -55,18 +60,18 @@ export default function FeeCard ({ |
|
|
|
|
)} |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
{thirdRow && !thirdRow.hide && ( |
|
|
|
|
{!hideTokenApprovalRow && ( |
|
|
|
|
<div className="fee-card__top-bordered-row"> |
|
|
|
|
<div className="fee-card__row-label"> |
|
|
|
|
<div className="fee-card__row-header-text"> |
|
|
|
|
{thirdRow.text} |
|
|
|
|
{t('swapThisWillAllowApprove', [tokenApprovalTextComponent])} |
|
|
|
|
</div> |
|
|
|
|
<div className="fee-card__link" onClick={() => thirdRow.onClick()}> |
|
|
|
|
{thirdRow.linkText} |
|
|
|
|
<div className="fee-card__link" onClick={() => onTokenApprovalClick()}> |
|
|
|
|
{t('swapEditLimit')} |
|
|
|
|
</div> |
|
|
|
|
<InfoTooltip |
|
|
|
|
position="top" |
|
|
|
|
contentText={thirdRow.tooltipText} |
|
|
|
|
contentText={t('swapEnableDescription', [tokenApprovalSourceTokenSymbol])} |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -77,7 +82,6 @@ export default function FeeCard ({ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
FeeCard.propTypes = { |
|
|
|
|
feeRowText: PropTypes.string.isRequired, |
|
|
|
|
primaryFee: PropTypes.shape({ |
|
|
|
|
fee: PropTypes.string.isRequired, |
|
|
|
|
maxFee: PropTypes.string.isRequired, |
|
|
|
@ -86,23 +90,9 @@ FeeCard.propTypes = { |
|
|
|
|
fee: PropTypes.string.isRequired, |
|
|
|
|
maxFee: PropTypes.string.isRequired, |
|
|
|
|
}), |
|
|
|
|
maxFeeRow: PropTypes.shape({ |
|
|
|
|
text: PropTypes.string.isRequired, |
|
|
|
|
linkText: PropTypes.string.isRequired, |
|
|
|
|
tooltipText: PropTypes.string.isRequired, |
|
|
|
|
onClick: PropTypes.func.isRequired, |
|
|
|
|
}).isRequired, |
|
|
|
|
thirdRow: PropTypes.shape({ |
|
|
|
|
text: PropTypes.oneOfType([ |
|
|
|
|
PropTypes.string, |
|
|
|
|
PropTypes.node, |
|
|
|
|
]).isRequired, |
|
|
|
|
linkText: PropTypes.string.isRequired, |
|
|
|
|
tooltipText: PropTypes.oneOfType([ |
|
|
|
|
PropTypes.string, |
|
|
|
|
PropTypes.node, |
|
|
|
|
]).isRequired, |
|
|
|
|
onClick: PropTypes.func.isRequired, |
|
|
|
|
hide: PropTypes.bool.isRequired, |
|
|
|
|
}), |
|
|
|
|
onFeeCardMaxRowClick: PropTypes.func.isRequired, |
|
|
|
|
hideTokenApprovalRow: PropTypes.bool.isRequired, |
|
|
|
|
tokenApprovalTextComponent: PropTypes.node, |
|
|
|
|
tokenApprovalSourceTokenSymbol: PropTypes.string, |
|
|
|
|
onTokenApprovalClick: PropTypes.func, |
|
|
|
|
} |
|
|
|
|