@kiwicom/orbit-components
Version:
<div align="center"> <a href="https://orbit.kiwi" target="_blank"> <img alt="orbit-components" src="https://orbit.kiwi/wp-content/uploads/2018/08/orbit-components.png" srcset="https://orbit.kiwi/wp-content/uploads/2018/08/orbit-components@2x.png 2x"
280 lines (249 loc) • 9.13 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SelectContainer = undefined;
var _react = require("react");
var React = _interopRequireWildcard(_react);
var _styledComponents = require("styled-components");
var _styledComponents2 = _interopRequireDefault(_styledComponents);
var _defaultTokens = require("../defaultTokens");
var _defaultTokens2 = _interopRequireDefault(_defaultTokens);
var _FormLabel = require("../FormLabel");
var _FormLabel2 = _interopRequireDefault(_FormLabel);
var _ChevronDown = require("../icons/ChevronDown");
var _ChevronDown2 = _interopRequireDefault(_ChevronDown);
var _FormFeedback = require("../FormFeedback");
var _FormFeedback2 = _interopRequireDefault(_FormFeedback);
var _consts = require("../FormFeedback/consts");
var _consts2 = _interopRequireDefault(_consts);
var _consts3 = require("./consts");
var _consts4 = _interopRequireDefault(_consts3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var Label = _styledComponents2.default.label.withConfig({
displayName: "Select__Label"
})(["width:100%;"]);
var StyledSelect = (0, _styledComponents2.default)(function (_ref) {
var className = _ref.className,
children = _ref.children,
value = _ref.value,
disabled = _ref.disabled,
onChange = _ref.onChange,
onFocus = _ref.onFocus,
onBlur = _ref.onBlur;
return React.createElement(
"select",
{
value: value,
className: className,
onChange: onChange,
onFocus: onFocus,
onBlur: onBlur,
disabled: disabled
},
children
);
}).withConfig({
displayName: "Select__StyledSelect"
})(["appearance:none;background:", ";border-radius:", ";cursor:pointer;color:", ";font-family:", ";font-size:", ";height:", ";padding:", ";outline:none;width:100%;transition:box-shadow ", " ease-in-out;z-index:2;&::-ms-expand{display:none;}padding-left:", ";border:0;box-shadow:inset 0 0 0 ", ";&:hover{box-shadow:inset 0 0 0 ", ";}&:focus{box-shadow:inset 0 0 0 ", ";}&:disabled{color:", ";background:", ";cursor:default;&:hover{box-shadow:inset 0 0 0 1px ", ";}}"], function (_ref2) {
var theme = _ref2.theme;
return theme.orbit.backgroundInput;
}, function (_ref3) {
var theme = _ref3.theme;
return theme.orbit.borderRadiusNormal;
}, function (_ref4) {
var theme = _ref4.theme,
filled = _ref4.filled;
return filled ? theme.orbit.colorTextInput : theme.orbit.colorPlaceholderInput;
}, function (_ref5) {
var theme = _ref5.theme;
return theme.orbit.fontFamily;
}, function (_ref6) {
var theme = _ref6.theme,
size = _ref6.size;
return size === _consts4.default.SMALL ? theme.orbit.fontSizeInputSmall : theme.orbit.fontSizeInputNormal;
}, function (_ref7) {
var theme = _ref7.theme,
size = _ref7.size;
return size === _consts4.default.SMALL ? theme.orbit.heightInputSmall : theme.orbit.heightInputNormal;
}, function (_ref8) {
var theme = _ref8.theme,
size = _ref8.size;
return size === _consts4.default.SMALL ? "0 " + theme.orbit.spaceXLarge + " 0 " + theme.orbit.spaceSmall : "0 " + theme.orbit.spaceXXLarge + " 0 " + theme.orbit.spaceSmall;
}, function (_ref9) {
var theme = _ref9.theme;
return theme.orbit.durationFast;
}, function (_ref10) {
var prefix = _ref10.prefix,
theme = _ref10.theme;
return prefix && theme.orbit.paddingLeftSelectPrefix;
}, function (_ref11) {
var theme = _ref11.theme,
error = _ref11.error;
return theme.orbit.borderWidthInput + " " + (error ? theme.orbit.borderColorInputError : theme.orbit.borderColorInput);
}, function (_ref12) {
var theme = _ref12.theme,
error = _ref12.error;
return theme.orbit.borderWidthInput + " " + (error ? theme.orbit.borderColorInputErrorHover : theme.orbit.borderColorInputHover);
}, function (_ref13) {
var theme = _ref13.theme;
return theme.orbit.borderWidthInputFocus + " " + theme.orbit.borderColorInputFocus;
}, function (_ref14) {
var theme = _ref14.theme;
return theme.orbit.colorTextInputDisabled;
}, function (_ref15) {
var theme = _ref15.theme;
return theme.orbit.backgroundInputDisabled;
}, function (_ref16) {
var theme = _ref16.theme;
return theme.orbit.borderColorInput;
});
StyledSelect.defaultProps = {
theme: _defaultTokens2.default
};
var SelectContainer = exports.SelectContainer = (0, _styledComponents2.default)(function (_ref17) {
var className = _ref17.className,
children = _ref17.children;
return React.createElement(
"div",
{ className: className },
children
);
}).withConfig({
displayName: "Select__SelectContainer"
})(["position:relative;display:flex;align-items:center;background:", ";width:100%;box-sizing:border-box;cursor:pointer;"], function (_ref18) {
var theme = _ref18.theme;
return theme.orbit.backgroundInput;
});
SelectContainer.defaultProps = {
theme: _defaultTokens2.default
};
var SelectPrefix = (0, _styledComponents2.default)(function (_ref19) {
var className = _ref19.className,
children = _ref19.children;
return React.createElement(
"div",
{ className: className },
children
);
}).withConfig({
displayName: "Select__SelectPrefix"
})(["display:flex;align-items:center;position:absolute;padding:", ";pointer-events:none;z-index:3;"], function (_ref20) {
var theme = _ref20.theme;
return "0 " + theme.orbit.spaceSmall;
});
SelectPrefix.defaultProps = {
theme: _defaultTokens2.default
};
var SelectSuffix = (0, _styledComponents2.default)(function (_ref21) {
var children = _ref21.children,
className = _ref21.className;
return React.createElement(
"div",
{ className: className },
children
);
}).withConfig({
displayName: "Select__SelectSuffix"
})(["position:absolute;right:", ";color:", ";pointer-events:none;z-index:3;& > *{width:", ";height:", ";margin-bottom:", ";}"], function (_ref22) {
var theme = _ref22.theme;
return theme.orbit.spaceXSmall;
}, function (_ref23) {
var theme = _ref23.theme,
disabled = _ref23.disabled;
return disabled ? theme.orbit.colorTextInputDisabled : theme.orbit.colorTextInput;
}, function (_ref24) {
var theme = _ref24.theme,
size = _ref24.size;
return size === _consts4.default.SMALL && theme.orbit.widthIconSmall;
}, function (_ref25) {
var theme = _ref25.theme,
size = _ref25.size;
return size === _consts4.default.SMALL && theme.orbit.heightIconSmall;
}, function (_ref26) {
var size = _ref26.size,
theme = _ref26.theme;
return size === _consts4.default.SMALL && theme.orbit.spaceXXXSmall;
});
SelectSuffix.defaultProps = {
theme: _defaultTokens2.default
};
var Select = function Select(_ref27) {
var _ref27$size = _ref27.size,
size = _ref27$size === undefined ? _consts4.default.NORMAL : _ref27$size,
label = _ref27.label,
placeholder = _ref27.placeholder,
value = _ref27.value,
_ref27$disabled = _ref27.disabled,
disabled = _ref27$disabled === undefined ? false : _ref27$disabled,
error = _ref27.error,
help = _ref27.help,
onChange = _ref27.onChange,
onBlur = _ref27.onBlur,
onFocus = _ref27.onFocus,
options = _ref27.options,
dataTest = _ref27.dataTest,
prefix = _ref27.prefix;
var filled = !!value;
return React.createElement(
Label,
{ "data-test": dataTest },
label && React.createElement(
_FormLabel2.default,
{ filled: filled, disabled: disabled },
label
),
React.createElement(
SelectContainer,
{ disabled: disabled },
prefix && React.createElement(
SelectPrefix,
{ prefix: prefix },
prefix
),
React.createElement(
StyledSelect,
{
size: size,
disabled: disabled,
error: error,
value: value,
prefix: prefix,
onFocus: onFocus,
onBlur: onBlur,
onChange: onChange,
filled: filled
},
placeholder && React.createElement(
"option",
{ label: placeholder, value: "", selected: true, disabled: true },
placeholder
),
options.map(function (option) {
return React.createElement(
"option",
{ key: "option-" + option.value, value: option.value, disabled: option.disabled },
option.label
);
})
),
React.createElement(
SelectSuffix,
{ size: size, disabled: disabled },
React.createElement(_ChevronDown2.default, null)
)
),
help && !error && React.createElement(
_FormFeedback2.default,
{ type: _consts2.default.HELP },
help
),
error && React.createElement(
_FormFeedback2.default,
{ type: _consts2.default.ERROR },
error
)
);
};
exports.default = Select;