Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I remove the bar in the react-select?

I am trying to improve my UI for the react-select. I did some researches online, but I still cannot figure out how to remove the bar in the select.

Can I style the control component to remove the bar? How?

import React from 'react';
import chroma from 'chroma-js';

import { colourOptions } from './docs/data';
import Select from 'react-select';

const dot = (color = '#ccc') => ({
  alignItems: 'center',
  display: 'flex',

  ':before': {
    backgroundColor: color,
    borderRadius: 10,
    content: ' ',
    display: 'block',
    marginRight: 8,
    height: 10,
    width: 10,
  },
});

const colourStyles = {
  control: styles => ({ ...styles, backgroundColor: 'white' }),
  option: (styles, { data, isDisabled, isFocused, isSelected }) => {
    const color = chroma(data.color);
    return {
      ...styles,
      backgroundColor: isDisabled
        ? null
        : isSelected ? data.color : isFocused ? color.alpha(0.1).css() : null,
      color: isDisabled
        ? '#ccc'
        : isSelected
          ? chroma.contrast(color, 'white') > 2 ? 'white' : 'black'
          : data.color,
      cursor: isDisabled ? 'not-allowed' : 'default',
    };
  },
  input: styles => ({ ...styles, ...dot() }),
  placeholder: styles => ({ ...styles, ...dot() }),
  singleValue: (styles, { data }) => ({ ...styles, ...dot(data.color) }),
};

export default () => (
  <Select
    defaultValue={colourOptions[2]}
    label="Single select"
    options={colourOptions}
    styles={colourStyles}
  />
);

Edit react-codesandboxer-example

like image 316
Lusha Li Avatar asked Jan 04 '19 23:01

Lusha Li


People also ask

How do I remove an icon from React select?

We can remove the dropdown indicator by including DropdownIndicator: () => null in components property. Save this answer.

How do I hide a dropdown in React select?

How do I hide a dropdown in React select? You can hide the dropdown arrow from the DropDownButton by adding class e-caret-hide to DropDownButton element using cssClass property.


2 Answers

react-select allows us to control components by doing

components={{
  IndicatorSeparator: () => null
}}

For example:

<Select
  id="search-commodity"
  options={comodityOptions}
  components={{
    IndicatorSeparator: () => null
  }}
/>
like image 56
Long Tran Avatar answered Oct 18 '22 01:10

Long Tran


The component you are looking to style is indicatorSeparator. For instance, add this to your styles:

indicatorSeparator: (styles) => ({display:'none'})

How did I find this out? I added classNamePrefix to the react-select properties and then used the inspector to see what the class name of the element was.

like image 33
Garrett Motzner Avatar answered Oct 18 '22 02:10

Garrett Motzner