1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-23 11:46:13 +02:00
metamask-extension/ui/app/components/hex-as-decimal-input.js

84 lines
2.0 KiB
JavaScript
Raw Normal View History

const Component = require('react').Component
const h = require('react-hyperscript')
const inherits = require('util').inherits
const ethUtil = require('ethereumjs-util')
const BN = ethUtil.BN
const extend = require('xtend')
module.exports = HexAsDecimalInput
inherits(HexAsDecimalInput, Component)
function HexAsDecimalInput () {
Component.call(this)
}
/* Hex as Decimal Input
*
* A component for allowing easy, decimal editing
* of a passed in hex string value.
*
* On change, calls back its `onChange` function parameter
* and passes it an updated hex string.
*/
HexAsDecimalInput.prototype.render = function () {
const props = this.props
2017-03-22 18:35:02 +01:00
const { value, onChange, min } = props
const toEth = props.toEth
const suffix = props.suffix
const decimalValue = decimalize(value, toEth)
const style = props.style
return (
h('.flex-row', {
style: {
alignItems: 'flex-end',
lineHeight: '13px',
fontFamily: 'Montserrat Light',
textRendering: 'geometricPrecision',
},
}, [
2017-03-22 18:35:02 +01:00
h('input.hex-input', {
2017-03-01 23:37:51 +01:00
type: 'number',
2017-03-22 18:35:02 +01:00
min,
style: extend({
display: 'block',
textAlign: 'right',
backgroundColor: 'transparent',
2017-02-28 03:18:39 +01:00
border: '1px solid #bdbdbd',
2017-03-01 23:37:51 +01:00
}, style),
value: decimalValue,
onChange: (event) => {
2017-03-01 23:37:51 +01:00
const hexString = (event.target.value === '') ? '' : hexify(event.target.value)
onChange(hexString)
},
}),
h('div', {
style: {
color: ' #AEAEAE',
fontSize: '12px',
marginLeft: '5px',
2017-02-28 19:23:47 +01:00
marginRight: '6px',
2017-02-28 01:55:58 +01:00
width: '20px',
},
}, suffix),
])
)
}
function hexify (decimalString) {
const hexBN = new BN(decimalString, 10)
return '0x' + hexBN.toString('hex')
}
function decimalize (input, toEth) {
2017-03-01 23:37:51 +01:00
if (input === '') {
return ''
} else {
const strippedInput = ethUtil.stripHexPrefix(input)
const inputBN = new BN(strippedInput, 'hex')
return inputBN.toString(10)
}
}