react-select-material-ui
Version:
A react SELECT component based on react-select and looking like a material-ui component
85 lines (84 loc) • 3.71 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var ColorConstants_1 = require("./ColorConstants");
var styleControl = function (hasInputFocus) {
if (hasInputFocus === void 0) { hasInputFocus = false; }
return ({
background: 'transparent',
borderWidth: 0,
borderBottom: getBorder(hasInputFocus),
borderRadius: 0,
boxShadow: 'none',
marginRight: 25,
'&:hover': {
boxShadow: 'none',
background: "linear-gradient(to bottom, " + ColorConstants_1.colorHover + " 0%, " + ColorConstants_1.colorHover + " 100%)",
backgroundPosition: '0 100%',
backgroundRepeat: 'no-repeat',
backgroundSize: '100% 1px',
transition: 'background-size .2s'
}
});
};
var getBorder = function (hasInputFocus) { return (hasInputFocus ? "solid 1px " + ColorConstants_1.colorFocus : "solid 1px " + ColorConstants_1.colorNoFocus); };
var styleIndicatorsContainer = {
position: 'absolute',
right: 0,
marginLeft: 8,
marginRight: -25,
backgroundColor: 'transparent',
height: '100%'
};
var styleClearIndicator = function (base) { return ({
color: ColorConstants_1.colorClearNormal,
margin: '0 4px 0 0',
padding: 0,
cursor: 'pointer',
'&:hover': {
color: ColorConstants_1.colorClearHover
}
}); };
var styleDropdownIndicator = {
margin: '0 0 0 4px',
padding: 0,
cursor: 'pointer'
};
var styleMenuList = {
padding: 0
};
var styleNoOptionsMessage = {
textAlign: 'left',
color: '#ff8080'
};
var styleMultiValueRemove = function (isDisabled) {
if (isDisabled === void 0) { isDisabled = false; }
return function (base) { return (__assign(__assign({}, base), { display: isDisabled ? 'none' : base.display })); };
};
var styleValueContainer = function (isClearable) {
if (isClearable === void 0) { isClearable = false; }
return ({
padding: 0,
marginRight: isClearable ? 25 : 0,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis'
});
};
exports.getStyles = function (props, hasInputFocus) {
var customStyles = props && props.styles ? props.styles : {};
var isDisabled = props && props.isDisabled ? true : false;
var isClearable = props && props.isClearable ? true : false;
return (__assign(__assign({}, customStyles), { control: mixStyle(styleControl(hasInputFocus), customStyles.control), clearIndicator: mixStyle(styleClearIndicator, customStyles.clearIndicator), dropdownIndicator: mixStyle(styleDropdownIndicator, customStyles.dropdownIndicator), indicatorsContainer: mixStyle(styleIndicatorsContainer, customStyles.indicatorsContainer), menuList: mixStyle(styleMenuList, customStyles.menuList), multiValueRemove: mixStyle(styleMultiValueRemove(isDisabled), customStyles.multiValueRemove), noOptionsMessage: mixStyle(styleNoOptionsMessage, customStyles.noOptionsMessage), valueContainer: mixStyle(styleValueContainer(isClearable), customStyles.valueContainer) }));
};
var mixStyle = function (customStyle, styleFn) { return function (base, state) { return (__assign(__assign(__assign({}, base), (typeof customStyle === 'function' ? customStyle(base, state) : customStyle)), (styleFn ? styleFn(base, state) : {}))); }; };
;