doly
Version:
doly ui components
186 lines (146 loc) • 6.13 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Flex = exports.FlexItem = void 0;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _common = require("../_style/common");
var _createTag = _interopRequireDefault(require("../_utils/createTag"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
function _templateObject2() {
var data = (0, _taggedTemplateLiteral2.default)(["\n box-sizing: border-box;\n flex-shrink: 1;\n\n ", "\n"]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n box-sizing: border-box;\n width: 100%;\n\n ", "\n ", "\n"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
var FlexTag = (0, _createTag.default)({
tag: 'div',
propsToOmit: ['gutter', 'justify', 'align']
});
var FlexItemTag = (0, _createTag.default)({
tag: 'div',
propsToOmit: ['gutter', 'order', 'span', 'width', 'align']
});
var justifyMap = {
start: 'flex-start',
end: 'flex-end'
};
var alignMap = {
top: 'flex-start',
bottom: 'flex-end'
};
var StyledFlex = (0, _styledComponents.default)(FlexTag)(_templateObject(), function (props) {
return props.align ? 'align-items:' + (alignMap[props.align] || props.align) + ';' : '';
}, function (props) {
return props.justify ? 'justify-content:' + (justifyMap[props.justify] || props.justify) + ';' : '';
});
var StyledFlexItem = (0, _styledComponents.default)(FlexItemTag)(_templateObject2(), function (props) {
var _st = '';
var basis = '0%',
grow = props.span || 1;
if (props.width) {
if (typeof props.width === 'number') {
basis = props.width + 'px';
grow = 0;
} else if (typeof props.width === 'string' && (props.width.indexOf('px') > -1 || props.width.indexOf('%') > -1)) {
basis = props.width;
grow = 0;
}
}
_st += "flex-basis:".concat(basis, ";flex-grow:").concat(grow, ";");
if (props.order) {
_st += "order:".concat(props.order, ";");
}
if (props.align) {
_st += "align-self:".concat(alignMap[props.align] || props.align, ";");
}
if (props.gutter) {
if (typeof props.gutter === 'number') {
_st += "\n margin-left:".concat(props.gutter, "px;\n &:first-child{ margin-left: 0; }\n ");
} else if (typeof props.gutter === 'string' && (props.gutter.indexOf('px') > -1 || props.gutter.indexOf('%') > -1)) {
_st += "\n margin-left:".concat(props.gutter, ";\n &:first-child{ margin-left: 0; }\n ");
}
}
return _st;
});
var GutterContext = _react.default.createContext(0);
var Provider = GutterContext.Provider,
Consumer = GutterContext.Consumer;
var FlexItem =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(FlexItem, _React$Component);
function FlexItem() {
(0, _classCallCheck2.default)(this, FlexItem);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(FlexItem).apply(this, arguments));
}
(0, _createClass2.default)(FlexItem, [{
key: "render",
value: function render() {
var _this = this;
return _react.default.createElement(Consumer, null, function (gutter) {
return _react.default.createElement(StyledFlexItem, (0, _extends2.default)({
gutter: gutter
}, _this.props));
});
}
}]);
return FlexItem;
}(_react.default.Component);
exports.FlexItem = FlexItem;
(0, _defineProperty2.default)(FlexItem, "propTypes", {
gutter: _propTypes.default.number,
order: _propTypes.default.number,
span: _propTypes.default.number,
width: _propTypes.default.string,
align: _propTypes.default.oneOf(['top', 'center', 'bottom'])
});
(0, _defineProperty2.default)(FlexItem, "defaultProps", {
span: 1
});
var Flex =
/*#__PURE__*/
function (_React$Component2) {
(0, _inherits2.default)(Flex, _React$Component2);
function Flex() {
(0, _classCallCheck2.default)(this, Flex);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Flex).apply(this, arguments));
}
(0, _createClass2.default)(Flex, [{
key: "render",
value: function render() {
var _this$props = this.props,
gutter = _this$props.gutter,
rest = (0, _objectWithoutProperties2.default)(_this$props, ["gutter"]);
return _react.default.createElement(Provider, {
value: gutter || 0
}, _react.default.createElement(_common.GlobalStyle, null), _react.default.createElement(StyledFlex, rest));
}
}]);
return Flex;
}(_react.default.Component);
exports.Flex = Flex;
(0, _defineProperty2.default)(Flex, "propTypes", {
gutter: _propTypes.default.number,
justify: _propTypes.default.oneOf(['start', 'center', 'end', 'space-between', 'space-around']),
align: _propTypes.default.oneOf(['top', 'center', 'bottom'])
});