# All files / mixins placeholder.js

100% Statements 1/1
100% Branches 1/1
100% Functions 1/1
100% Lines 1/1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53

    3x

     // @flow

    /**
     * CSS to style the selection psuedo-element.
     *
     * @example
     * // Styles as object usage
     * const styles = {
     *   ...placeholder({'color': 'blue'})
     * }
     *
     * // styled-components usage
     * const div = styled.input`
     *    ${placeholder({'color': 'blue'})}
     * `
     *
     * // CSS as JS Output
     *
     * 'input': {
     *   '&:-moz-placeholder': {
     *     'color': 'blue',
     *   },
     *   '&:-ms-input-placeholder': {
     *     'color': 'blue',
     *   },
     *   '&::-moz-placeholder': {
     *     'color': 'blue',
     *   },
     *   '&::-webkit-input-placeholder': {
     *     'color': 'blue',
     *   },
     * },
     */

    function placeholder(styles: Object, parent: string = '&') {
      return {
        [`${parent}::-webkit-input-placeholder`]: {
          ...styles,
        },
        [`${parent}:-moz-placeholder`]: {
          ...styles,
        },
        [`${parent}::-moz-placeholder`]: {
          ...styles,
        },
        [`${parent}:-ms-input-placeholder`]: {
          ...styles,
        },
      }
    }

    export default placeholder