import React from 'react' import PropTypes from 'prop-types' import { CX } from '../constants' import Icon from './icon' import Image from './image' import Text from './text' class FileInput extends React.PureComponent { state = { file: this.props.file, hovering: false, } handleOnChange = (e) => { this.props.onChange(e) this.setState({ file: URL.createObjectURL(e.target.files[0]) }) } handleMouseLeave = () => { this.setState({ hovering: false }) } handleMouseEnter = () => { this.setState({ hovering: true }) } render() { const { id, fileType, disabled, title, height, width, className, isBordered, } = this.props const { file, hovering } = this.state const containerClasses = CX(className, { d: 1, aiCenter: 1, cursorPointer: 1, jcCenter: 1, overflowHidden: 1, bgSecondary: 1, radiusSmall: isBordered, px10: isBordered, py10: isBordered, border2PX: isBordered, borderColorSecondary: isBordered, borderDashed: isBordered, }) const iconClasses = CX({ cSecondary: !hovering, cWhite: hovering, }) return (
{ !!title &&
{title}
}
) } } FileInput.propTypes = { onChange: PropTypes.func, file: PropTypes.any, fileType: PropTypes.string, disabled: PropTypes.bool, title: PropTypes.string, id: PropTypes.string.isRequired, height: PropTypes.string, width: PropTypes.string, isBordered: PropTypes.bool, className: PropTypes.string, } FileInput.defaultProps = { fileType: 'image', isBordered: false, } export default FileInput