UNPKG

@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
"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;