Advertisement
ahmadandika

RenderSelectInput

Jul 1st, 2019
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Component } from 'react';
  2. import Select from 'react-select';
  3. import { customStyles } from '../../helpers/styleSelect';
  4. import CustomOption from './CustomOption';
  5.  
  6. class RenderSelectInput extends Component {
  7.   constructor(props) {
  8.     super(props);
  9.     this.state = {};
  10.   }
  11.  
  12.   onBlur = e => {
  13.     const blurHandler = this.props.onBlur;
  14.     if (blurHandler) {
  15.       blurHandler({
  16.         type: 'blur',
  17.         target: {
  18.           value: e.target.value
  19.         }
  20.       });
  21.     }
  22.   };
  23.  
  24.   render() {
  25.     const {
  26.       input,
  27.       options,
  28.       name,
  29.       id,
  30.       label,
  31.       disabled,
  32.       placeholder,
  33.       requiredStar,
  34.       meta: { touched, error, warning }
  35.     } = this.props;
  36.     return (
  37.       <div>
  38.         <div className="form-group">
  39.           <label htmlFor={id}>
  40.             {label}
  41.             {requiredStar === true ? (
  42.               <span className="text-required"> *</span>
  43.             ) : (
  44.               ''
  45.             )}
  46.           </label>
  47.           <Select
  48.             {...input}
  49.             id={id}
  50.             name={name}
  51.             isSearchable
  52.             isDisabled={disabled}
  53.             className={`${touched && error ? 'focus-error-select' : ''}`}
  54.             styles={customStyles}
  55.             placeholder={placeholder}
  56.             optionClassName="needsclick"
  57.             options={options}
  58.             components={{ Option: CustomOption }}
  59.             value={
  60.               input.value &&
  61.               options.find(option => option.value === input.value)
  62.             }
  63.             isClearable
  64.             onChange={value => {
  65.               input.onChange(value);
  66.             }}
  67.             onBlur={this.onBlur}
  68.           />
  69.           {touched &&
  70.             ((error && error !== 'Required' && (
  71.               <span className="form-error">{error}</span>
  72.             )) ||
  73.               (warning && <span className="form-error">{warning}</span>))}
  74.         </div>
  75.       </div>
  76.     );
  77.   }
  78. }
  79.  
  80. export default RenderSelectInput;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement