import styled, { css } from 'styled-components'; import { cssUnitCalc } from 'utils'; import { getBaseSize } from 'styles/var/size'; import { errorBorderWrap } from 'styles/var/border'; import { animated } from 'react-spring'; import Icon from 'kwai-icon'; import { IInput } from './types'; const iconStyle = css` position: absolute; cursor: pointer; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; `; export const SIcon = styled(Icon).attrs(({ name, color = '#b6bbc7' }: any) => ({ name, color, fillColorRule: '&&& path', }))` ${iconStyle} ${p => p.iconPosition === 'start' ? css` left: 12px; ` : css` right: 12px; `} } `; export const Info = styled(Icon).attrs(() => ({ name: 'InfoInvert', color: '#ff5a5e', fillColorRule: '&&& path', }))` ${iconStyle} `; const FOCUS_COLOR = '#1eabb8'; export const InputWrap = styled.div` display: inline-block; position: relative; font-size: 0; width: ${p => cssUnitCalc(p.width)}; `; export const Tips = styled.div` position: absolute; left: 0; top: ${p => `${getBaseSize(p.size) + 4}px`}; font-size: 12px; color: #868da1; overflow: hidden; `; export const ErrorMessage = animated(styled(Tips)` color: #ff5a5e; `); const InputStyle = css` box-sizing: border-box; border: 0; box-shadow: inset 0 0 0 1px #dadcdf; color: #101934; border-radius: 2px; font-size: 14px; transition: box-shadow 0.3s ease-in-out; padding: 0 12px; display: inline-block; outline: none; ::placeholder { color: #868da1; } :focus { ${p => !p.noFocus && css` box-shadow: inset 0 0 0 2px ${FOCUS_COLOR}; border-radius: 4px; `}; caret-color: ${FOCUS_COLOR}; } :disabled { border-color: #e1e3e5; color: #ced1d7; } `; export const InputElement = errorBorderWrap(styled.input` height: ${p => `${getBaseSize(p.size)}px`}; width: ${p => cssUnitCalc(p.width)}; ${InputStyle} ${p => p.hasClear && css` padding-right: 30px; `} `); export const TextAreaElement = errorBorderWrap(styled.textarea` &&& { padding: 8px 12px; width: ${p => cssUnitCalc(p.width)}; } ${p => p.noResize && css` resize: none; `}; ${InputStyle} `);