UNPKG

@e-group/material-module

Version:
108 lines (98 loc) 3.69 kB
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;