@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"
218 lines (190 loc) • 7.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
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);
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; } }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var getBorderColor = function getBorderColor() {
return function (_ref) {
var theme = _ref.theme,
hasError = _ref.hasError,
disabled = _ref.disabled,
checked = _ref.checked;
return hasError && !disabled && !checked ? theme.orbit.borderColorCheckboxRadioError : theme.orbit.borderColorCheckboxRadio;
};
};
var Glyph = _styledComponents2.default.span.withConfig({
displayName: "Radio__Glyph"
})(["visibility:hidden;width:12px;height:12px;background-color:", ";border-radius:", ";flex-shrink:0;"], function (_ref2) {
var theme = _ref2.theme,
disabled = _ref2.disabled;
return disabled ? theme.orbit.colorIconCheckboxRadioDisabled : theme.orbit.colorIconCheckboxRadio;
}, function (_ref3) {
var theme = _ref3.theme;
return theme.orbit.borderRadiusCircle;
});
Glyph.defaultProps = {
theme: _defaultTokens2.default
};
var IconContainer = _styledComponents2.default.div.withConfig({
displayName: "Radio__IconContainer"
})(["position:relative;box-sizing:border-box;flex:0 0 auto;display:flex;align-items:center;justify-content:center;background-color:", ";height:", ";width:", ";border-radius:", ";transform:scale(1);transition:all ", " ease-in-out;}"], function (_ref4) {
var theme = _ref4.theme;
return theme.orbit.backgroundInput;
}, function (_ref5) {
var theme = _ref5.theme;
return theme.orbit.heightCheckbox;
}, function (_ref6) {
var theme = _ref6.theme;
return theme.orbit.widthCheckbox;
}, function (_ref7) {
var theme = _ref7.theme;
return theme.orbit.borderRadiusCircle;
}, function (_ref8) {
var theme = _ref8.theme;
return theme.orbit.durationFast;
});
IconContainer.defaultProps = {
theme: _defaultTokens2.default
};
var TextContainer = _styledComponents2.default.div.withConfig({
displayName: "Radio__TextContainer"
})(["display:flex;flex-direction:column;margin-left:", ";"], function (_ref9) {
var theme = _ref9.theme;
return theme.orbit.spaceXSmall;
});
TextContainer.defaultProps = {
theme: _defaultTokens2.default
};
var Info = _styledComponents2.default.span.withConfig({
displayName: "Radio__Info"
})(["font-size:", ";color:", ";line-height:", ";"], function (_ref10) {
var theme = _ref10.theme;
return theme.orbit.fontSizeFormFeedback;
}, function (_ref11) {
var theme = _ref11.theme;
return theme.orbit.colorInfoCheckBoxRadio;
}, function (_ref12) {
var theme = _ref12.theme;
return theme.orbit.lineHeightText;
});
Info.defaultProps = {
theme: _defaultTokens2.default
};
var LabelText = _styledComponents2.default.span.withConfig({
displayName: "Radio__LabelText"
})(["font-weight:", ";font-size:", ";color:", ";height:", ";line-height:", ";"], function (_ref13) {
var theme = _ref13.theme;
return theme.orbit.fontWeightNormal;
}, function (_ref14) {
var theme = _ref14.theme;
return theme.orbit.fontSizeFormLabel;
}, function (_ref15) {
var theme = _ref15.theme;
return theme.orbit.colorFormLabel;
}, function (_ref16) {
var theme = _ref16.theme;
return theme.orbit.heightCheckbox;
}, function (_ref17) {
var theme = _ref17.theme;
return theme.orbit.heightCheckbox;
});
LabelText.defaultProps = {
theme: _defaultTokens2.default
};
var Input = _styledComponents2.default.input.withConfig({
displayName: "Radio__Input"
})(["visibility:hidden;display:none;&:checked ~ ", " > ", "{font-weight:", ";}&:checked + ", " > ", "{visibility:visible;}"], TextContainer, LabelText, function (_ref18) {
var theme = _ref18.theme;
return theme.orbit.fontWeightMedium;
}, IconContainer, Glyph);
Input.defaultProps = {
theme: _defaultTokens2.default
};
var Label = (0, _styledComponents2.default)(function (_ref19) {
var disabled = _ref19.disabled,
theme = _ref19.theme,
type = _ref19.type,
hasError = _ref19.hasError,
props = _objectWithoutProperties(_ref19, ["disabled", "theme", "type", "hasError"]);
return React.createElement(
"label",
props,
props.children
);
}).withConfig({
displayName: "Radio__Label"
})(["font-family:", ";display:flex;flex-direction:row;align-items:self-start;opacity:", ";cursor:", ";position:relative;", "{border:1px solid ", ";}&:hover ", "{border-color:", ";}&:active ", "{border-color:", ";transform:", ";}&:focus{outline:0;& ", "{border:", ";}}"], function (_ref20) {
var theme = _ref20.theme;
return theme.orbit.fontFamily;
}, function (_ref21) {
var disabled = _ref21.disabled,
theme = _ref21.theme;
return disabled ? theme.orbit.opacityCheckboxDisabled : "1";
}, function (_ref22) {
var disabled = _ref22.disabled;
return disabled ? "default" : "pointer";
}, IconContainer, getBorderColor(), IconContainer, function (_ref23) {
var disabled = _ref23.disabled,
theme = _ref23.theme;
return !disabled && theme.orbit.borderColorCheckboxRadioHover;
}, IconContainer, function (_ref24) {
var disabled = _ref24.disabled,
theme = _ref24.theme;
return disabled ? getBorderColor() : theme.orbit.borderColorCheckboxRadioActive;
}, function (_ref25) {
var disabled = _ref25.disabled,
theme = _ref25.theme;
return !disabled && "scale(" + theme.orbit.modifierScaleCheckboxRadioActive + ")";
}, IconContainer, function (_ref26) {
var theme = _ref26.theme;
return "2px " + theme.orbit.borderStyleInput + " " + theme.orbit.borderColorCheckboxRadioFocus;
});
Label.defaultProps = {
theme: _defaultTokens2.default
};
var Radio = function Radio(_ref27) {
var label = _ref27.label,
value = _ref27.value,
_ref27$hasError = _ref27.hasError,
hasError = _ref27$hasError === undefined ? false : _ref27$hasError,
_ref27$disabled = _ref27.disabled,
disabled = _ref27$disabled === undefined ? false : _ref27$disabled,
_ref27$checked = _ref27.checked,
checked = _ref27$checked === undefined ? false : _ref27$checked,
onChange = _ref27.onChange,
info = _ref27.info,
dataTest = _ref27.dataTest;
return React.createElement(
Label,
{ disabled: disabled, hasError: hasError, checked: checked, "data-test": dataTest },
React.createElement(Input, { value: value, type: "radio", disabled: disabled, checked: checked, onChange: onChange }),
React.createElement(
IconContainer,
null,
React.createElement(Glyph, { disabled: disabled })
),
React.createElement(
TextContainer,
null,
label && React.createElement(
LabelText,
null,
label
),
info && React.createElement(
Info,
null,
info
)
)
);
};
exports.default = Radio;