// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import { Checkbox } from 'semantic-ui-react'; import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import Form, { Input, InputAddressSelect, AddressSelect } from '~/ui/Form'; import { nullableProptype } from '~/util/proptypes'; import TokenSelect from './tokenSelect'; import styles from '../transfer.css'; export const CHECK_STYLE = { position: 'absolute', top: '38px', left: '1em' }; export default class Details extends Component { static propTypes = { address: PropTypes.string, balance: PropTypes.object, all: PropTypes.bool, extras: PropTypes.bool, sender: PropTypes.string, senderError: PropTypes.string, recipient: PropTypes.string, recipientError: PropTypes.string, token: PropTypes.object, total: PropTypes.string, totalError: PropTypes.string, value: PropTypes.string, valueError: PropTypes.string, onChange: PropTypes.func.isRequired, wallet: PropTypes.object, senders: nullableProptype(PropTypes.object) }; static defaultProps = { wallet: null, senders: null }; render () { const { all, extras, token, total, totalError, value, valueError } = this.props; const label = ( ); return (
{ this.renderTokenSelect() } { this.renderFromAddress() } { this.renderToAddress() }
} value={ value } error={ valueError } onChange={ this.onEditValue } />
} onClick={ this.onCheckAll } style={ CHECK_STYLE } />
} error={ totalError } >
{ total } ETH
} onCheck={ this.onCheckExtras } style={ CHECK_STYLE } />
); } renderFromAddress () { const { sender, senderError, senders } = this.props; if (!senders) { return null; } return (
} hint={ } value={ sender } onChange={ this.onEditSender } />
); } renderToAddress () { const { recipient, recipientError } = this.props; return (
} hint={ } error={ recipientError } value={ recipient } onChange={ this.onEditRecipient } />
); } renderTokenSelect () { const { balance, token } = this.props; return ( ); } onChangeToken = (event, index, tokenId) => { this.props.onChange('token', tokenId); } onEditSender = (event, sender) => { this.props.onChange('sender', sender); } onEditRecipient = (event, recipient) => { this.props.onChange('recipient', recipient); } onEditValue = (event) => { this.props.onChange('value', event.target.value); } onCheckAll = () => { this.props.onChange('all', !this.props.all); } onCheckExtras = () => { this.props.onChange('extras', !this.props.extras); } onContacts = () => { this.setState({ showAddresses: true }); } }