diff options
author | Vitaly Takmazov | 2018-12-12 11:37:52 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2023-01-13 10:37:54 +0300 |
commit | 24a4dcbd81e9f4defc8fee30fbeb0967a3db9b32 (patch) | |
tree | c27a132a0ab2c4fcac63f6988cfdb19a94b8fc62 /vnext/src/components/UploadButton.js | |
parent | 03800f2679162f1f7749cfaf8bdf3e40383ac261 (diff) |
UploadButton
Diffstat (limited to 'vnext/src/components/UploadButton.js')
-rw-r--r-- | vnext/src/components/UploadButton.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/vnext/src/components/UploadButton.js b/vnext/src/components/UploadButton.js new file mode 100644 index 00000000..5dfa7a1d --- /dev/null +++ b/vnext/src/components/UploadButton.js @@ -0,0 +1,47 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import Icon from './Icon'; + +export default class UploadButton extends React.Component { + constructor(props) { + super(props); + } + openfile = () => { + const input = this.props.inputRef.current; + if (this.props.value) { + this.props.onChange(''); + } else { + input.click(); + } + } + attachmentChanged = (event) => { + this.props.onChange(event.target.value); + } + render() { + return ( + <div style={this.props.value ? activeStyle : inactiveStyle} + onClick={this.openfile}> + <Icon name="ei-camera" size="s" /> + <input type="file" accept="image/jpeg,image/png" onClick={e => e.stopPropagation()} + style={{ display: 'none' }} ref={this.props.inputRef} value={this.props.value} + onChange={this.attachmentChanged} /> + </div> + ); + } +} + +UploadButton.propTypes = { + value: PropTypes.string.isRequired, + onChange: PropTypes.func.isRequired, + inputRef: PropTypes.shape({ current: PropTypes.instanceOf(Element) }) +}; + +const inactiveStyle = { + cursor: 'pointer', + color: '#888' +}; +const activeStyle = { + cursor: 'pointer', + color: 'green' +}; |