/* Copyright (C) 2017 Cloudbase Solutions SRL This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import React from 'react' import PropTypes from 'prop-types' import styled from 'styled-components' import Palette from '../../styleUtils/Palette' import StyleProps from '../../styleUtils/StyleProps' import starImage from './images/star.svg' const Wrapper = styled.div` position: relative; ` const getInputWidth = props => { if (props.width) { return props.width } if (props.large) { return `${StyleProps.inputSizes.large.width}px` } return `${StyleProps.inputSizes.regular.width}px` } const Input = styled.input` width: ${props => getInputWidth(props)}; height: ${StyleProps.inputSizes.regular.height}px; line-height: ${StyleProps.inputSizes.regular.height}px; border-radius: ${StyleProps.borderRadius}; background-color: #FFF; border: 1px solid ${props => props.highlight ? Palette.alert : Palette.grayscale[3]}; color: ${Palette.black}; padding: 0 ${props => props.customRequired ? '29px' : '8px'} 0 16px; font-size: inherit; transition: all ${StyleProps.animations.swift}; box-sizing: border-box; &:hover { border-color: ${props => props.highlight ? Palette.alert : Palette.primary}; } &:focus { border-color: ${props => props.highlight ? Palette.alert : Palette.primary}; outline: none; } &:disabled { color: ${Palette.grayscale[3]}; border-color: ${Palette.grayscale[0]}; background-color: ${Palette.grayscale[0]}; } &::placeholder { color: ${Palette.grayscale[3]}; } ` const Required = styled.div` display: ${props => props.show ? 'block' : 'none'}; position: absolute; right: 12px; top: 13px; width: 8px; height: 8px; background: url('${starImage}') center no-repeat; ` const TextInput = ({ _ref, required, ...props }) => { return ( ) } TextInput.propTypes = { _ref: PropTypes.func, required: PropTypes.bool, } export default TextInput