You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-wallet/src/components/Select/index.js

79 lines
2.0 KiB

import React from 'react';
import PropTypes from 'prop-types';
import Select from 'react-select';
import AsyncSelect from 'react-select/lib/Async';
import colors from 'config/colors';
6 years ago
const styles = isSearchable => ({
singleValue: base => ({
...base,
color: colors.TEXT_SECONDARY,
}),
control: (base, { isDisabled }) => ({
...base,
borderRadius: '2px',
borderColor: colors.DIVIDER,
boxShadow: 'none',
background: isDisabled ? colors.LANDING : colors.WHITE,
'&:hover': {
6 years ago
cursor: isSearchable ? 'text' : 'pointer',
borderColor: colors.DIVIDER,
},
}),
indicatorSeparator: () => ({
display: 'none',
}),
dropdownIndicator: base => ({
...base,
6 years ago
display: isSearchable ? 'none' : 'block',
color: colors.TEXT_SECONDARY,
path: '',
'&:hover': {
color: colors.TEXT_SECONDARY,
},
}),
menu: base => ({
...base,
margin: 0,
boxShadow: 'none',
}),
menuList: base => ({
...base,
padding: 0,
boxShadow: 'none',
background: colors.WHITE,
borderLeft: `1px solid ${colors.DIVIDER}`,
borderRight: `1px solid ${colors.DIVIDER}`,
borderBottom: `1px solid ${colors.DIVIDER}`,
}),
option: (base, { isSelected }) => ({
...base,
color: colors.TEXT_SECONDARY,
background: isSelected ? colors.LANDING : colors.WHITE,
borderRadius: 0,
'&:hover': {
cursor: 'pointer',
background: colors.LANDING,
},
}),
6 years ago
});
const SelectWrapper = props => (
<div>
6 years ago
{props.isAsync && <AsyncSelect styles={styles(props.isSearchable)} {...props} /> }
{!props.isAsync && <Select styles={styles(props.isSearchable)} {...props} />}
</div>
);
SelectWrapper.propTypes = {
isAsync: PropTypes.bool,
6 years ago
isSearchable: PropTypes.bool,
};
SelectWrapper.defaultProps = {
isAsync: false,
6 years ago
isSearchable: false,
};
export default SelectWrapper;