backpack-ui
Version:
Lonely Planet's Components
164 lines (127 loc) • 3.56 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require("babel-runtime/helpers/defineProperty");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _radium = require("radium");
var _radium2 = _interopRequireDefault(_radium);
var _colors = require("../../styles/colors");
var _colors2 = _interopRequireDefault(_colors);
var _mq = require("../../styles/mq");
var _mq2 = _interopRequireDefault(_mq);
var _color = require("../../utils/color");
var _label = require("../form/label");
var _label2 = _interopRequireDefault(_label);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = {
container: {
base: {
backgroundColor: _colors2.default.bgPrimary,
borderColor: (0, _color.darken)(_colors2.default.bgPrimary, 17),
borderStyle: "solid",
borderWidth: ".1rem",
color: "rgba(" + (0, _color.rgb)(_colors2.default.textPrimary) + ", .72)",
position: "relative"
},
size: {
full: {
width: "100%"
},
half: {
float: "left",
width: "50%"
}
},
removeBorder: {
borderLeft: 0
}
}
};
function InputGroup(_ref) {
var children = _ref.children,
label = _ref.label,
id = _ref.id,
size = _ref.size,
removeBorder = _ref.removeBorder;
var style = {
container: [styles.container.base]
};
if (size) {
style.container.push(styles.container.size[size]);
}
if (removeBorder) {
style.container.push(styles.container.removeBorder);
}
return _react2.default.createElement(
"div",
{
className: "InputGroup",
style: style.container
},
_react2.default.createElement(_radium.Style, {
scopeSelector: ".InputGroup",
rules: {
label: {
position: "absolute",
left: "2rem",
top: "1.9rem",
zIndex: 2
},
mediaQueries: (0, _defineProperty3.default)({}, "(min-width: " + _mq2.default.min[768] + ")", {
label: {
left: "1.5rem",
top: "1.4rem"
}
})
}
}),
_react2.default.createElement(
_label2.default,
{
owns: id,
orientation: "vertical",
size: "small",
uppercase: true
},
label
),
children
);
}
InputGroup.propTypes = {
children: function children(props, propName, componentName) {
var prop = props[propName];
var error = null;
_react2.default.Children.forEach(prop, function (child) {
var component = child.type.displayName !== "Input" && child.type.displayName !== "Select" && child.type.displayName !== "NumberInput";
if (component) {
error = new Error(componentName + " children should be of type \"Input\" or \"Select\".");
}
});
return error;
},
label: _propTypes2.default.string.isRequired,
id: _propTypes2.default.string.isRequired,
size: _propTypes2.default.oneOf(["full", "half"]),
removeBorder: _propTypes2.default.bool
};
InputGroup.defaultProps = {
label: "",
type: "text",
id: "",
name: "",
defaultValue: "",
min: "",
max: "",
placeholder: "",
required: false,
size: "full",
removeBorder: false
};
InputGroup.styles = styles;
exports.default = (0, _radium2.default)(InputGroup);