@e-group/material-module
Version:
EGroup Team react component modules.
108 lines (98 loc) • 3.69 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
import React from 'react';
import Select from 'react-select';
import CreatableSelect from 'react-select/creatable';
import { makeStyles, emphasize, useTheme } from '@material-ui/core';
import muiComponents from './components';
export const useStyles = makeStyles(theme => ({
input: {
display: 'flex'
},
single: {
height: 19
},
multi: {
height: 'auto'
},
multiStandard: {
padding: 0
},
multiFilled: {
paddingTop: theme.spacing(2.5),
paddingBottom: 0
},
multiOutlined: {
paddingTop: 9,
paddingBottom: 7
},
valueContainer: {
display: 'flex',
flex: 1,
alignItems: 'center',
flexWrap: 'wrap',
'& > div': {
padding: 0
}
},
chip: {
margin: theme.spacing(1, 0.25)
},
chipFocused: {
backgroundColor: emphasize(theme.palette.type === 'light' ? theme.palette.grey[300] : theme.palette.grey[700], 0.08)
},
noOptionsMessage: {
padding: "".concat(theme.spacing(), "px ").concat(theme.spacing(2), "px")
},
singleValue: {
fontSize: 16
},
indicator: {
cursor: 'pointer'
},
separator: {
alignSelf: 'center',
backgroundColor: 'hsl(0,0%,80%)',
width: 1,
height: theme.spacing(2)
}
}));
const ReactSelect = props => {
const components = props.components,
_props$variant = props.variant,
variant = _props$variant === void 0 ? 'normal' : _props$variant,
other = _objectWithoutProperties(props, ["components", "variant"]);
const classes = useStyles(props);
const theme = useTheme(); // To fixed input text color in type=dark
const selectStyles = {
input: provided => _objectSpread(_objectSpread({}, provided), {}, {
color: theme.palette.text.primary,
'& input': {
font: 'inherit'
}
}),
menu: provided => _objectSpread(_objectSpread({}, provided), {}, {
backgroundColor: theme.palette.background.paper,
color: theme.palette.text.primary,
transition: theme.transitions.create('box-shadow'),
boxShadow: theme.shadows[1],
borderRadius: theme.shape.borderRadius,
border: "1px solid ".concat(theme.palette.divider)
}),
menuPortal: provided => _objectSpread(_objectSpread({}, provided), {}, {
zIndex: theme.zIndex.modal
})
};
const selectProps = _objectSpread({
classes,
styles: selectStyles,
components: _objectSpread(_objectSpread({}, muiComponents), components)
}, other);
if (variant === 'creatable') {
return /*#__PURE__*/React.createElement(CreatableSelect, selectProps);
}
return /*#__PURE__*/React.createElement(Select, selectProps);
};
export default ReactSelect;